zet*_*bit 5 python lxml xinclude
我正在 Python 中使用 lxml 开发一个简单的 xml 日志文件类。
到目前为止,我的方法是使用两个文件。格式良好的 XML 文件,其中包含第二个文件(XML 片段)。我正在使用 xi:include 元素。这样,只需将<event>元素附加到文件末尾即可有效地更新 XML 片段。
格式良好的 XML 文件(“logfile.xml”)如下所示:
<?xml version="1.0"?>
<logfile>
<event xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="events.xml"/>
</event>
</logfile>
Run Code Online (Sandbox Code Playgroud)
xml 片段('events.xml')如下所示:
<event>
<data></data>
</event>
<event>
<data></data>
</event>
<event>
<data></data>
</event>
Run Code Online (Sandbox Code Playgroud)
我的目标是最终达到:
<?xml version="1.0"?>
<logfile>
<event>
<data></data>
</event>
<event>
<data></data>
</event>
<event>
<data></data>
</event>
</logfile>
Run Code Online (Sandbox Code Playgroud)
在 python 中,我使用 xinclude 方法来处理格式良好的 XML 文件(“logfile.xml”)中的 xi:include 元素。这有效,但仅当有一个<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')
Run Code Online (Sandbox Code Playgroud)
我看到的错误:
lxml.etree.XIncludeError: Extra content at the end of the document
Run Code Online (Sandbox Code Playgroud)
我可以将事件包含在另一个元素中,但这并不适合将数据附加到 XML 片段文档的末尾。
引用的文档xi:xinclude 必须是完整的 xml 文档(“完整的 xml 信息集”)。您的events.xml不是有效的 xml 文档,因为您没有包含单个根元素。
您可以通过使用xpointer属性来选择事件元素来仅包含一个子集。不过,我不确定 lxml 支持此属性。
| 归档时间: |
|
| 查看次数: |
3570 次 |
| 最近记录: |