Python 解析xml
python有三种方法解析XML,SAX,DOM,以及ElementTree:
- 本文简单介绍用ElementTree解析xml
xml文件如下:
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>、
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
XML是一种固有的分层数据格式,最自然的方式来表示它是一棵树。ET有两个类用于此目的 - ElementTree将整个XML文档表示为树,Element表示此树中的单个节点。与整个文档(从文件读取和写入文件)的交互通常在ElementTree级别上进行。与单个XML元素及其子元素的交互在Element级别上完成。
解析程序如下
import xml.etree.ElementTree as ET
tree = ET.parse("country.xml") #打开xml文档
#root = ET.fromstring(country_string) #从字符串传递xml
root = tree.getroot() #获得root节点
for country in root.findall('country'): #找到root节点下的所有country节点
rank = country.find('rank').text #子节点下节点rank的值
name = country.get('name') #子节点下属性name的值
print (name, rank)
运行结果如下
代码中每行都有注释,这里就不赘述了。