xml处理模块

Posted 人无远虑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xml处理模块相关的知识,希望对你有一定的参考价值。

这些我都大体看了看,准备以后用的时候过来找

 

 

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

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

 1 <?xml version="1.0"?>
 2 <data>
 3     <country name="Liechtenstein">
 4         <rank updated="yes">2</rank>
 5         <year>2008</year>
 6         <gdppc>141100</gdppc>
 7         <neighbor name="Austria" direction="E"/>
 8         <neighbor name="Switzerland" direction="W"/>
 9     </country>
10     <country name="Singapore">
11         <rank updated="yes">5</rank>
12         <year>2011</year>
13         <gdppc>59900</gdppc>
14         <neighbor name="Malaysia" direction="N"/>
15     </country>
16     <country name="Panama">
17         <rank updated="yes">69</rank>
18         <year>2011</year>
19         <gdppc>13600</gdppc>
20         <neighbor name="Costa Rica" direction="W"/>
21         <neighbor name="Colombia" direction="E"/>
22     </country>
23 </data>

xml协议在各个语言里的都 是支持的,在python中可以用以下模块操作xml

 1 # coding=utf-8
 2 import xml.etree.ElementTree as ET
 3 
 4 tree = ET.parse(\'xml.xml\')
 5 root = tree.getroot()
 6 print(root.tag)  #获得标标签
 7 
 8 #遍历xml文档
 9 for child in root:
10     print(child.tag,child.attrib) #获得标签,还有里边的属性
11     for i in child:
12         print(i.tag,i.text,i.attrib)  #获得标签,属性,已经标签所对应的内容
13 
14 #只遍历year  节点
15 for node in root.iter(\'year\'):
16     print(node.tag,node.text)

修改和删除xml文档内容

 1 import xml.etree.ElementTree as ET
 2  
 3 tree = ET.parse("xmltest.xml")
 4 root = tree.getroot()
 5  
 6 #修改
 7 for node in root.iter(\'year\'):
 8     new_year = int(node.text) + 1
 9     node.text = str(new_year)
10     node.set("updated","yes")
11  
12 tree.write("xmltest.xml")
13  
14  
15 #删除node
16 for country in root.findall(\'country\'):
17    rank = int(country.find(\'rank\').text)
18    if rank > 50:
19      root.remove(country)
20  
21 tree.write(\'output.xml\')

自己创建xml文档

 1 import xml.etree.ElementTree as ET
 2  
 3  
 4 new_xml = ET.Element("namelist")
 5 name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"})
 6 age = ET.SubElement(name,"age",attrib={"checked":"no"})
 7 sex = ET.SubElement(name,"sex")
 8 sex.text = \'33\'
 9 name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"})
10 age = ET.SubElement(name2,"age")
11 age.text = \'19\'
12  
13 et = ET.ElementTree(new_xml) #生成文档对象
14 et.write("test.xml", encoding="utf-8",xml_declaration=True)
15  
16 ET.dump(new_xml) #打印生成的格式

 

以上是关于xml处理模块的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

xml Eclipse模板(代码片段)检查参数并最终抛出IllegalArgumentException

需要示例代码片段帮助

从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration

如何有条件地将 C 代码片段编译到我的 Perl 模块?