python解析XML:之二 (ElementTree)
xml.etree.ElementTree 模块实现了解析、创建XML数据的简单有效的API ,ElementTree模块拥有两个类
ElementTree: 代表整个XML文档,视作tree;用于对整个XML文档的操作;
Element: 代表XML文档(tree)上的单个节点;用于对XML节点及子节点的操作;
ElementTree类的方法:
1) _setroot(element) #以element替代当前的root element, 参数element是element实例
2) getroot() #获取XML tree的根element
3) parse(source, parser = None) # 加载一个XML文件到element tree;
参数source是文件名或文件对象;parser默认为标准的XMLParser;返回root element
4) write(file, encoding = "us-ascii", xml_declaration = None, default_namespace = None, method = "xml", short_empty_elements = True) # 将element tree写入xml文件;参数file - 文件名或文件对象;method为("xml", "html", "text"之一),默认为“xml”
5) iter(tag = None) #创建并返回root element的tree iterator
6) find()/findall()/findtext()/iterfind #同Element同样的方法
7) getiterator(tag = None) #
例:Parse XML
import xml.etree.ElementTree as ET
tree = ET.parse(xml_file_name)
root = tree.getroot() #获取XML文件的root元素
或者:
root = ET.fromstring(country_data_as_string) # ?
获取子节点信息:
for child in root:
print (child.tag, child.attrib)
Element类
属性:
======
tag # 元素类型:element type
text # 元素起始tag与结尾tag之间的文本
attrib #字典,包含了element的属性
tail #element结尾tag和下一个起始tag之间的文本
方法:
======
1) clear()方法 #重置element,去掉所有subelements,清除所有属性,并设置text及tail属性为None
2) get(key, default = None) #获取element的属性 ,此属性命名为key?
3) items() #获取以列表形式返回element的(name, value)对;顺序随机
4) keys() #以列表形式返回element属性;顺序随机
5) set(key, value) #将key属性的元素的值设置为value
subelement的方法:
1) append(subelement) #添加一个subelement
2) extend(subelements) #通过列表对象追加0个或多个subelements
3) find(match, namespaces = None) # 查询第一个跟match匹配的subelement (以tag或者path)
4) findall(match, namespaces = None) #查询所有匹配的subelements
5) getchildren() # list(elem)
6) getiterator(tag = None) #Element.iter()
7) insert(index, subelement) #在指定位置插入subelement
8) iter(tag = None): 以当前element为root,创建一个tree iterator
9) iterfind(match, namespaces = None) #查询所有匹配的subelements
10) itertext() #创建一个text iteratror
11) makeelement(tag, attrib) #创建与当前element类型相同的element 对象;最好用SubElement()工厂方法替代此方法
12) remove(subelement) #去掉element的subelement;跟find*方法不同的是,此方法基于实例的identity,而不是tag或内容