Я занимаюсь разработкой простого класса xml logfile с использованием lxml в Python.
До сих пор я использовал два файла.Правильно сформированный файл XML, который включает второй файл, который является фрагментом XML.Я использую элемент xi: include.Таким образом, фрагмент XML можно эффективно обновить, просто добавив <event>
элементы в конец файла.
Правильно сформированный XML-файл ('logfile.xml') выглядит следующим образом:
<?xml version="1.0"?>
<logfile>
<event xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="events.xml"/>
</event>
</logfile>
Фрагмент xml ('events.xml') выглядит следующим образом:
<event>
<data></data>
</event>
<event>
<data></data>
</event>
<event>
<data></data>
</event>
Моя цель - получить:
<?xml version="1.0"?>
<logfile>
<event>
<data></data>
</event>
<event>
<data></data>
</event>
<event>
<data></data>
</event>
</logfile>
В python я использую метод xinclude для обработки элемента xi: include в моем правильно сформированном XML-файле ('logfile.xml').Это работает , но , только если есть один элемент <event>
, являющийся фрагментом XML ('events.xml')
Мой код Python:
tree = etree.parse('logfile.xml')
tree.xinclude()
root = tree.getroot()
print etree.tostring(self.logfileNode, pretty_print=True, xml_declaration=True, encoding='UTF-8')
ОшибкаЯ вижу:
lxml.etree.XIncludeError: Extra content at the end of the document
Я мог бы содержать события в другом элементе, но это не подходит для добавления данных в конец фрагмента документа XML.