WEB开发网
开发学院软件开发Python 使用 ElementTree,以 Python 语言处理 XML 阅读

使用 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:

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:使用 ElementTree Python

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接