Python-处理xml
XML
是实现不同语言或程序之间进行数据交换的协议。格式如下
<data> <country name="Liechtenstein"> <rank updated="yes">2</rank> <year name="alex">2029</year> <gdppc>141100</gdppc> <neighbor direction="E" name="Austria" /> <neighbor direction="W" name="Switzerland" /> </country> <country name="Singapore"> <rank updated="yes">5</rank> <year name="alex">2032</year> <gdppc>59900</gdppc> <neighbor direction="N" name="Malaysia" /> </country> <country name="Panama"> <rank updated="yes">69</rank> <year name="alex">2032</year> <gdppc>13600</gdppc> <neighbor direction="W" name="Costa Rica" /> <neighbor direction="E" name="Colombia" /> </country> </data>
解析xml
from xml.etree import ElementTree as ET with open("myxml.xml") as f: tmp = f.read() root = ET.XML(tmp) print(type(root)) #获得Element对象,根元素 #打印:<class 'xml.etree.ElementTree.Element'>
from xml.etree import ElementTree as ET tree = ET.parse("myxml.xml") # 读取xml文件,获得ElementTree对象 print(type(tree)) # 打印: <class 'xml.etree.ElementTree.ElementTree'> root = tree.getroot() #获得xml文件的根元素
操作xml
属性: tag 当前节点的名字 attrib 当前节点的属性 text 当前节点的内容(<>这里是内容</>) 方法: makeelement(tag,attrib) #创建一个新节点 copy() append(subelement) #为当前节点追加一个子节点 extend(element) #为当前节点追加几个节点 insert(index, subelement) #为当前节点指定位置添加子节点(相当于创建新节点) remove(subelement) #删除当前节点下的子节点 find(path) #获取寻找到的第一个子节点 findtext(path) #获取寻找到的第一个子节点的内容 findall(path) #获取所有的子节点 iterfind() #获取所有指定节点,创建迭代器 clear() #清空节点 get(key, default=None) #获取当前节点的属性值 set(key, value) #设置当前节点的属性值 keys() #获取当前节点的所有属性的key items() #获取当前节点的所有属性值(key-value) iter() #获取当前节点下指定的所有节点,返回一个迭代器 itertext() #获取当前节点下指定的所有节点的内容
创建xml
from xml.etree import ElementTree as ET # 创建根节点 root = ET.Element("root") # 创建子节点,并添加属性 nodes = ET.Element("nodes", {"name": "alex"}) # 创建子节点的子节点,并添加属性 node = ET.Element("node", {"python": "3.5"}) # 为子节点添加节点 nodes.append(node) # 将子节点添加到根节点下 root.append(nodes) # 使用根节点创建节点树,并添加xml头 tree = ET.ElementTree(root) tree.write("tree.xml",xml_declaration=True)
from xml.etree import ElementTree as ET # 创建根节点 root = ET.Element("famliy") # 创建大儿子 # son1 = ET.Element('son', {'name': '儿1'}) son1 = root.makeelement('son', {'name': '儿1'}) # 创建小儿子 # son2 = ET.Element('son', {"name": '儿2'}) son2 = root.makeelement('son', {"name": '儿2'}) # 在大儿子中创建两个孙子 # grandson1 = ET.Element('grandson', {'name': '儿11'}) grandson1 = son1.makeelement('grandson', {'name': '儿11'}) # grandson2 = ET.Element('grandson', {'name': '儿12'}) grandson2 = son1.makeelement('grandson', {'name': '儿12'}) son1.append(grandson1) son1.append(grandson2) # 把儿子添加到根节点中 root.append(son1) root.append(son1) tree = ET.ElementTree(root) tree.write('oooo.xml',encoding='utf-8', short_empty_elements=False)
from xml.etree import ElementTree as ET # 创建根节点 root = ET.Element("famliy") # 创建节点大儿子 son1 = ET.SubElement(root, "son", attrib={'name': '儿1'}) # 创建小儿子 son2 = ET.SubElement(root, "son", attrib={"name": "儿2"}) # 在大儿子中创建一个孙子 grandson1 = ET.SubElement(son1, "age", attrib={'name': '儿11'}) grandson1.text = '孙子' et = ET.ElementTree(root) #生成文档对象 et.write("test.xml", encoding="utf-8", xml_declaration=True, short_empty_elements=False)

浙公网安备 33010602011771号