我正在使用Python的ElementTree解析xml文件,例如:
et = ElementTree(file=file("test.xml"))
test.xml以几行xml注释开头。
是否有办法从et中获取这些评论?
对于ElementTree 1.2.X,Reading processing instructions and comments with ElementTree (http://effbot.org/zone/element-pi.htm)上有一篇文章。
编辑:
替代方法是使用实现ElementTree API的lxml.etree。引用ElementTree compatibility of lxml.etree :
ElementTree忽略注释和解析时处理指令XML,而etree将在其中读取它们和将其视为评论或处理指令元素分别。
是,有办法。
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时,它们才会插入到结果结构中。