使用Python的ElementTree查找顶级xml注释

时间:2009-02-12 12:50:15

标签: python xml elementtree

我正在使用Python的ElementTree解析xml文件,如下所示:

et = ElementTree(file=file("test.xml"))

test.xml以几行xml注释开头。

有没有办法从et获得这些评论?

2 个答案:

答案 0 :(得分:4)

对于ElementTree 1.2.X,有一篇关于Reading processing instructions and comments with ElementTree http://effbot.org/zone/element-pi.htm)的文章。


编辑:

替代方案是使用 lxml.etree 来实现ElementTree API。来自ElementTree compatibility of lxml.etree 的引用:

  

ElementTree忽略评论和   解析时处理指令   XML,而 etree将在中读取它们   将它们视为评论或   ProcessingInstruction元素   分别

答案 1 :(得分:0)

是的,有办法。

from xml.etree import ElementTree

def parseXml (fn):
    try:
        target = ElementTree.TreeBuilder (insert_comments=True)
        parser = ElementTree.XMLParser(target=target, encoding='utf-8')
        et = ElementTree.parse (fn, parser)
    except Exception as e:
        print ("%s: %s" % (fn, str (e)))
        return

    for el in et.getroot ():
        print (el)

同样适用于处理指令(ElementTree.PI),仅当insert_pis = true时,它们才会插入到结果结构中。