7.5 xml.etree.ElementTree:XML操纵API
ElementTree库提供了一些工具,可以使用基于事件和基于文档的API来解析XML,可以用XPath表达式搜索已解析的文档,还可以创建新文档或修改现有文档。
7.5.1 解析XML文档
已解析的XML文档在内存中由ElementTree和Element对象表示,这些对象基于XML文档中节点嵌套的方式按树结构相互连接。用parse()解析一个完整的文档时,会返回一个ElementTree实例。这个树了解输入文档中的所有数据,另外还可以原地搜索或操纵树中的节点。基于这种灵活性,可以更方便地处理已解析的文档,不过,与基于事件的解析方法相比,这种方法往往需要更多的内存,因为必须一次加载整个文档。
对于简单的小文档(如以下播客列表,被表示为一个OPML大纲),内存需求并不大。
要解析这个文档,需要向parse()传递一个打开的文件句柄。
from xml.etree import ElementTree
with open('podcasts.opml','rt') as f:
tree = ElementTree.parse(f)
print(tree)
这个方法会读取数据、解析XML,并返回一个ElementTree对象。
运行结果:
<xml.etree.ElementTree.ElementTree object at 0x0000000002F0E278>