XML模块

http://baike.baidu.com/link?url=-mBgvMdEDU7F05Pw7h_hBt7A0ctYiPm5a_WvKVLknydnRXKRIyydcVZWRjd_5HE2fMW5Ic45Nb4DiuH1azLjjfs1HBMER-4j38pqFgmj4z4spRud6DrmYimbttjfSB105KHP2pDzaVKmfFvL1JrZ4cpmHqEiFiuSZ_LehN3Hp5GqLdEb6mohzYRyFIZadILH3iDqyvAjCbEXGr4qLMLZEq

可扩展标记语言标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言


xml的格式如下,就是通过<>节点来区别数据结构的:

<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank updated="yes">69</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>

xmltest.xml

tree = ET.parse("xmltest.xml")#解析xml文件
root = tree.getroot()#获取根节点
node.tag
node.attrib
node.text
node.tag = "years"      #修改tag的值
node.text = str(new_year)  #赋予node元素新的值
node.set("updated","no")  #设置node元素的属性值
root.remove(country)



在python中可以用以下模块操作xml(import xml.etree.ElementTree as ET

import xml.etree.ElementTree as ET

tree = ET.parse("xmltest.xml")#解析xml文件
root = tree.getroot()
print(root.tag) # 遍历xml文档
for child in root:
print(child.tag, child.attrib)
for i in child:
print(i.tag,i.attrib,i.text) # 只遍历year 节点
for node in root.iter('year'):
print(node.tag, node.text)

修改和删除xml文档内容

# import xml.etree.ElementTree as ET
#
# tree = ET.parse("xmltest.xml")#解析xml文件
# root = tree.getroot()
# print(root.tag)
#
# # 遍历xml文档
# for child in root:
# print(child.tag, child.attrib)
# for i in child:
# print(i.tag,i.attrib,i.text)
#
# # 只遍历year 节点
# for node in root.iter('year'):
# print(node.tag, node.text) import xml.etree.ElementTree as ET
tree = ET.parse("xmltest.xml")
root = tree.getroot() # 修改
for node in root.iter("year"):
new_year = int(node.text) + 1
node.text = str(new_year)#赋予node元素新的值
node.set("updated","no")#设置node元素的属性值 tree.write("xmltest.xml") #删除
for country in root.findall("country"):
rank = int(country.find('rank').text)
if rank > 50:
root.remove(country) tree.write("output.xml")

自己创建XML文件

import xml.etree.ElementTree as ET
new_xml = ET.Element("namelist")
name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"})
age = ET.SubElement(name,"age",attrib={"checked":"no"})
sex = ET.SubElement(name,"sex")
name.text = '陈泰成'
age.text = ""
sex.text = '男' name = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"})
age = ET.SubElement(name,"age")
name.text = "哈利路亚"
age.set("is_privary","yes")
age.text = "" et = ET.ElementTree(new_xml)
et.write("test.xml",encoding = "utf-8",xml_declaration = True)
ET.dump(new_xml)

人生苦短之我用Python篇(XML模块)的更多相关文章

  1. python解析xml模块封装代码

    在python中解析xml文件的模块用法,以及对模块封装的方法.原文转自:http://www.jbxue.com/article/16586.html 有如下的xml文件:<?xml vers ...

  2. Python之路(第十六篇)xml模块、datetime模块

    一.xml模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单, xml比较早,早期许多软件都是用xml,至今很多传统公司如金融行业的很多系统的接口还主要 ...

  3. 人生苦短之我用Python篇(深浅拷贝、常用模块、内置函数)

    深浅拷贝 有时候,尤其是当你在处理可变对象时,你可能想要复制一个对象,然后对其做出一些改变而不希望影响原来的对象.这就是Python的copy所发挥作用的地方. 定义了当对你的类的实例调用copy.c ...

  4. python之xml模块

    # XML 模块的操作参考链接 # http://www.cnblogs.com/yuanchenqi/articles/5732581.html

  5. Python的xml模块

    先来一段xml代码 <?xml version="1.0"?> <data> <country name="Liechtenstein&qu ...

  6. 人生苦短之我用Python篇(线程/进程、threading模块:全局解释器锁gil/信号量/Event、)

    线程: 有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元.是一串指令的集合.线程是程序中一个单一的顺序控制流程.进程内一个相对独立的.可调度的执行单元,是 ...

  7. 人生苦短之我用Python篇(paramiko模块)

    该模块机遇SSH用于连接远程服务器并执行相关操作 基于用户名密码连接: import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在kno ...

  8. python的xml模块用法

    xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的 ...

  9. 人生苦短之我用Python篇(列表list、字典dict、元组tuple、字符串str)

    列表 创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_s ...

随机推荐

  1. Flask-最简单的Python http服务框架使用

    环境准备 Python + pip + Flask sudo easy_install pip sudo pip install flask 代码如下(做了个jieba分词的服务) # encodin ...

  2. hdu5616 暴力枚举

    2017-08-25 20:08:54 writer:pprp 题目简述: • HDU 5616• n个砝码,可以放在天平左右两侧或不放• m次询问,每次询问是否可以测出给定重量• 1 ≤ n ≤ 2 ...

  3. codeforces Round#429 (Div2)

    2017-08-20 10:00:37 writer:pprp 用头文件#include <bits/stdc++.h>很方便 A. Generous Kefa codeforces 84 ...

  4. kubectl delete

    kubectl delete 通过配置文件名.stdin.资源名称或label选择器来删除资源. 支持JSON和YAML格式文件.可以只指定一种类型的参数:文件名.资源名称或label选择器. 有些资 ...

  5. 请教下 f = f.replace('\n', '\r')这条没起作用

    !/usr/bin/env python -- coding: utf-8 -- import json import string import sys reload(sys) sys.setdef ...

  6. python 贪婪和非贪婪模式

    这样的正则表达式: r'\*(.+)\*'  如果想要匹配*something*这样的一个串按道理说是没问题的 但是如果文本是*this* is *something* 那么我们的正则表达式就会采取贪 ...

  7. Openssl VS编译方法

    工具: 1. 编译环境win10+vs2015专业版 2. ActivePerl工具,官网下载链接:http://www.activestate.com/activeperl/downloads 3. ...

  8. centos7安装ambari教程

    ambari版本 :2.4.2 (不过各版本安装过程没啥差异) 目录: 为什么要用Ambari 概念概述 版本信息 原理简介 安装 创建集群 创建集群 手动修改配置 NameNode HA 安装Sma ...

  9. poj 2229 Sumsets 完全背包求方案总数

    Sumsets Description Farmer John commanded his cows to search for different sets of numbers that sum ...

  10. [Vue]Vue实例的选项props传递数据props为驼峰式命名

    在vue的中文官网有这样的说明: HTML 中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符.这意味着当你使用 DOM 中的模板时,camelCase (驼峰命名法) 的 prop ...