xml模块

mac2022-06-30  67

xml模块

xml是可扩展标记语言和HTML类似,用来传输和储存数据,python里面的处理XML数据的模块为xml.etree.ElementTree,ElementTree的意思是节点树,二Element带便一个单独的节点。

xml数据由标签作为标记而标又有两种。

自闭合标签(有头有尾):<age>2</age>

非闭合标签(有头无尾):<husband age="5" name="Mary" />

看一段下面的xml数据:

 

<data> <animals name="Tom"> <age>2</age> <b_year>2010</b_year> <weight>20</weight> <husband age="10" name="Alex" /> </animals> <animals name="Bob"> <age>3</age> <b_year>2012</b_year> <weight>15</weight> <husband age="5" name="Mary" /> </animals> <animals name="Chirwy"> <age>4</age> <b_year>2008</b_year> <weight>25</weight> <husband age="3" name="Ared" /> </animals> </data>

 

1.导入xml模块和解析xml文件

1 import xml.etree.ElementTree as ET 2 3 tree = ET.parse('XML_data') #使用parse方法解析XML_data得到xlm数据树,把它赋值给tree得到一个对象,接下来直接操作此对象 4 root = tree.getroot() #得到根节点 5 print(root) #打印根节点的内存地址 6 print(root.tag) #tag方法打印根结点的标签名称

2.查看其他节点及其名称

1 import xml.etree.ElementTree as ET 2 3 tree = ET.parse('XML_data') #使用parse方法解析XML_data得到xlm数据树,把它赋值给tree得到一个对象,接下来直接操作此对象 4 root = tree.getroot() #得到根节点 5 print(root) #打印根节点的内存地址 6 print(root.tag) #tag属性打印根结点的标签名称 7 8 for i in root: 9 print("子节点",i.tag) 10 for j in i: 11 print("孙节点", j.tag)

结果:

子节点 animals 孙节点 age 孙节点 b_year 孙节点 weight 孙节点 husband 子节点 animals 孙节点 age 孙节点 b_year 孙节点 weight 孙节点 husband 子节点 animals 孙节点 age 孙节点 b_year 孙节点 weight 孙节点 husband

3.获得标签里面的属性

1 for m in root: 2 print(m.attrib) {'name': 'Tom'} {'name': 'Bob'} {'name': 'Chirwy'}

4.标签里面包含的文本内容

1 for m in root: 2 for n in m: 3 print(n.text) 2 2010 20 None 3 2012 15 None 4 2008 25 None

5.若想取到特定标签中的值,可以使用iter()方法

1 for n in root.iter("b_year"): 2 print(n.tag,n.text) b_year 2010 b_year 2012 b_year 2008

6.修改xml数据

set()方法可以给标签添加新的属性

1 for n in root.iter("b_year"): 2 new_year=int(n.text)+1 3 n.text=str(new_year)#修改b_year标签的text属性 4 n.set("updated1","yes")#给year这个标签增加一个属性 5 tree.write("xml_data1.xml")#直接把修改的写入到文件中

第五行中的文件名可以使用原来的文件名字相当于覆盖更新,他也可以使用其他的名称,相当于又创建了一个新的xml文件。

7.删除标签使用remove()方法,使用方法和6一样

8.通过模块创建xml文件

1 import xml.etree.ElementTree as ET #导入模块 2 new_xml = ET.Element('Student') #创建根节点 3 name = ET.SubElement(new_xml, 'name', attrib={"GPA":'4.5'}) #创建子节点 4 age = ET.SubElement(name, 'age',attrib={'isOK':'ok'}) #创建孙节点 5 sex = ET.SubElement(name, 'sex') #创建孙节点 6 sex.text = '28' #添加标签内容 7 8 et = ET.ElementTree(new_xml) #生成文件对象 9 et.write('test.xml', encoding='utf-8',xml_declaration=True) #生成对象

结果:

<?xml version='1.0' encoding='utf-8'?> <Student> <name GPA="4.5"> <age isOK="ok" /> <sex>28</sex> </name> </Student>

 

转载于:https://www.cnblogs.com/hexiaoqi/p/9378660.html

最新回复(0)