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>
Python代码
# 如何解析简单的xml文档
from xml.etree.ElementTree import parse
f = open('demo.xml')
et = parse(f)
# 得到根节点
root = et.getroot()
print(root)
# 标签
print(root.tag)
# 字典
print(root.attrib)
print(root.text.strip())
# print(root.getchildren())
for child in root:
print(child.get('name'))
# 总是找到第一个元素
print(root.find('country'))
# 找到所有, 返回列表
print(root.findall('country'))
# 返回可迭代对象
print(root.iterfind('country'))
for e in root.iterfind('country'):
print(e.get('name'))
print(list(root.iter()))
print(list(root.iter('rank')))
# 匹配所有的子节点
print(root.findall('country/*'))
# // 描述找到任意层次下的子元素
print(root.findall('.//rank'))
# .. 描述父对象
print(root.findall('.//rank/..'))
# 描述包含某一个属性的
print(root.findall('country[@name]'))
# 描述属性为特定值的元素
print(root.findall('country[@name="Singapore"]'))
# 描述一个元素必须包含指定的子元素
print(root.findall('country[rank]'))
# 指定子元素的tag必须包含指定的值
print(root.findall('country[rank="5"]'))
# 指定相对位置
print(root.findall('country[1]'))
# 指定最后一个位置
print(root.findall('country[last()]'))
# 找倒数第二个
print(root.findall('country[last()-1]'))