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或内容

原文地址:https://www.cnblogs.com/tanql/p/4360164.html