使用 ElementTree,以 Python 语言处理 XML
2007-03-29 12:11:28 来源:WEB开发网核心提示: from elementtreeimport ElementTreeweblog = ElementTree.parse('weblog.xml').getroot()interesting = [entryfor entryin weblog.findall('e
from elementtree
import ElementTree
weblog = ElementTree.parse(
'weblog.xml').getroot()
interesting = [entry
for entry
in weblog.findall(
'entry')
if entry.find(
'host').text==
'209.202.148.31'
and
entry.find(
'statusCode').text==
'200']
for e
in interesting:
print
"%s (%s)" % (e.findtext(
'resource'),
e.findtext(
'byteCount'))
请注意上面的不同之处。 gnosis.xml.objectify 将子元素节点直接作为节点的属性进行连接(每个节点都是一个根据标记名命名的定制类)。另一方面, ElementTree 使用 Element 类的方法查找子节点。 .findall() 方法返回所有匹配节点的列表; .find() 则仅返回首次匹配的节点; .findtext() 返回节点的文本内容。如果您只想要 gnosis.xml.objectify 子元素上的首次匹配,只要为其建立索引即可 - 例如, node.tag[0] 。但如果这样的子元素只有一个,那么无需建立显式的索引,您也可以引用它。
但是在 ElementTree的示例中,其实您并不 需要显式查找所有 <entry> 元素;迭代时 Element 实例的行为方式类似于列表。在这里要注意一点,不管子节点有何标记,对 所有的子节点都进行迭代。相比之下, gnosis.xml.objectify 节点没有内置方法可遍历它所有的子元素。尽管如此,构造一个一行的 children() 函数还是挺简单的(我会在将来的发行版中包含该函数)。比照清单 6:
Tags:使用 ElementTree Python
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接