Reputation: 1248
I'm parsing an xml file using Python's ElementTree, like that:
et = ElementTree(file=file("test.xml"))
test.xml starts with a few lines of xml comments.
Is there a way to get those comments from et?
Upvotes: 3
Views: 3146
Reputation: 123
Yes, there is a way.
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)
Same applies to processing instructions (ElementTree.PI), they will be inserted into the resulting structure only if insert_pis=true.
Upvotes: 0
Reputation: 29877
For ElementTree 1.2.X there is an article on Reading processing instructions and comments with ElementTree (http://effbot.org/zone/element-pi.htm).
EDIT:
The alternative would be using lxml.etree which implements the ElementTree API. A quote from ElementTree compatibility of lxml.etree :
ElementTree ignores comments and processing instructions when parsing XML, while etree will read them in and treat them as Comment or ProcessingInstruction elements respectively.
Upvotes: 4