一段xml文件内容如下
<collection shelf="New Arrivals">
<movie title="Enemy Behind">
<type>War, Thriller</type>
<format>DVD</format>
<year>2003</year>
<rating>PG</rating>
<stars>10</stars>
<description>Talk about a US-Japan war</description>
</movie>
</collection>
首先了解一下xml的结构,xml类似html
<collection shelf="New Arrivals"> </collection>这个是xml的起始标签,如果将xml的内容用一棵树来表示,那么这个起始标签就相当于是一棵树的根(想象一下二叉树的结构) 也可以写成<collection>,前者相比于后者多了一个属性(attrib),
<movie title="Enemy Behind"> </movie>这个是二级子标签,它的上一级标签是<collection shelf="New Arrivals">,也同样有属性
<type>War, Thriller</type>这个是三级子标签,依次类推,不同的是三级子标签中没有属性(attrib),<type>文本(text)</type>,在标签对内的是文本(text),大概的结构就是这样
接下来用python对xml文件进行解析,将以上的xml代码段放到一个名为movie.xml的文件中并与python文件放在同一目录
from xml.etree import ElementTree as ET
tree = ET.parse("movies.xml") #打开movies.xml并以树结构返回给tree
root = tree.getroot()# 获取xml文件的根节点(最顶层标签)
print(root.tag) #打印最顶层标签的标签
print("------")
for node in root.iter('collection'): #迭代最顶层标签里的所有子标签
print(node.attrib)# 打印标签的属性
print(dir(node))#打印标签的结构
for i in node: #迭代子标签
print(i.tag, i.text, i.attrib) #打印子标签的标签,文本内容,标签属性
for j in i:#迭代子标签的子标签
print(j.tag, j.text, j.attrib)#打印子标签的子标签的标签,内容,属性
# for k in j:#如果还有子标签可以继续迭代
# do something