xml 是实现不通语言或程序之间进行数据交换的协议,可扩展标记语言,标准通用标记语言的子集。是一种用于标记电子文件使其具有结构性的标记语言。xml格式如下,是通过<>节点来区别数据结构的。xml在各种语言都是支持的。
<data>
<country name="Liechtenstein">
<rank updated="yes">2rank>
<year updated="yes">2010year>
<gdppc>141100gdppc>
<neighbor direction="E" name="Austria" />
<neighbor direction="W" name="Switzerland" />
country>
<country name="Singapore">
<rank updated="yes">5rank>
<year updated="yes">2013year>
<gdppc>59900gdppc>
<neighbor direction="N" name="Malaysia" />
country>
data>
import xml.etree.ElementTree as ET
tree = ET.parse(\'test.xml\') # parse 解析一个xml文件
root = tree.getroot() # 根节点
print(root)
print(root.tag)
for i in root:
print(i.tag) # 子节点
for j in i: # 孙节点
print(j.tag)
import xml.etree.ElementTree as ET
tree = ET.parse(\'test.xml\') # parse 解析一个xml文件
root = tree.getroot() # 根节点
for i in root:
for j in i:
print(j.attrib) #属性
print(j.text) #文本
源码解释的是Create tree iterator.
import xml.etree.ElementTree as ET
tree = ET.parse(\'test.xml\')
root = tree.getroot()
for i in root.iter("year"): # iter为所有节点,不传参为所有节点。传参寻找tag的节点
print(i.tag, i.attrib, i.text)
import xml.etree.ElementTree as ET
tree = ET.parse(\'test.xml\')
root = tree.getroot()
for i in root.iter("year"): # iter为所有节点
print(type(i.text)) # text为str格式
\'\'\'修改\'\'\'
new_year = int(i.text) + 1 #
i.text = str(new_year)
i.set(\'updated\', \'yes\') # 原文提示是Set element attribute 设置属性
\'\'\'tree已经修改,还需要写入xml文件\'\'\'
tree.write(\'test_new.xml\')
import xml.etree.ElementTree as ET
tree = ET.parse(\'test.xml\')
root = tree.getroot()
for i in root.findall(\'country\'):#"""Find all matching subelements by tag name or path.
rank=i.find(\'rank\').text
rank=int(rank)
if rank>1:
root.remove(i) #只是tree修改了,还需要写入xml
tree.write(\'test.xml\')
import xml.etree.ElementTree as ET
new_xml=ET.Element(\'namelist\') #根节点
name=ET.SubElement(new_xml,\'name\',attrib={\'enrolled\':\'yes\'}) #def SubElement(parent, tag, attrib={}, **extra):
age=ET.SubElement(name,\'age\',attrib={\'check\':\'yes\'})
sex=ET.SubElement(name,\'one\')
name1=ET.SubElement(new_xml,\'name\',attrib={\'enrolled\':\'no\'}) #def SubElement(parent, tag, attrib={}, **extra):
age=ET.SubElement(name1,\'age\',attrib={\'check\':\'no\'})
age.text=\'19\'
sex=ET.SubElement(name1,\'two\')
et=ET.ElementTree(new_xml)#生成文档对象
et.write(\'test.xml\')