Я разрабатываю простой класс журнала xml, используя lxml в Python.Python lxml с помощью xi: include с несколькими фрагментами Xml
Мой подход до сих пор заключался в использовании двух файлов. Хорошо сформированный 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: включать элемент в моей хорошо сформированной XML фи le ('logfile.xml'). Это работает но только если есть один <event>
элемент фрагмент XML ('events.xml')
Мой код питона:
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.
попробуйте сделать это - добавьте тег в начало файла events.xml, а затем добавьте тег в конец файла. может быть, это может помочь –
RanRag