Я разбираю файл xml с помощью ElementTree Python, например:
et = ElementTree(file=file("test.xml"))
test.xml начинается с нескольких строк комментариев xml.
Есть ли способ получить эти комментарии от et?
Я разбираю файл xml с помощью ElementTree Python, например:
et = ElementTree(file=file("test.xml"))
test.xml начинается с нескольких строк комментариев xml.
Есть ли способ получить эти комментарии от et?
Для ElementTree 1.2.X есть статья о Чтение инструкций по обработке и комментариев с помощью ElementTree ( http://effbot.org/zone/element-pi.htm).
ИЗМЕНИТЬ:
Альтернативой может быть использование lxml.etree, реализующего ElementTree API. Цитата из Совместимость с ElementTree для lxml.etree:
ElementTree игнорирует комментарии и инструкции по обработке при синтаксическом анализе XML, в то время как etree считывает их и обрабатывает как элементы Comment или ProcessingInstruction соответственно.
Да, есть способ.
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.