首页 > 解决方案 > 让 lxml 对 XML 片段进行编码

问题描述

我在使用 lxml 对一些 XML 进行编码时遇到了一些问题。具体来说,我有这个 xml 片段:

<p>first para</p><p><ul><li>item1</li><li>item2</li></ul></p>

在我使用的代码中:

_before = fragment_fromstring(_before)

然而,这给了我:

<p>first para</p><p/><ul><li>item1</li><li>item2</li></ul>

这是因为在 HTML 中,您不会将段落包裹在列表周围。但是,在 XML 的这种特殊情况下,我可以而且需要这样做。

我努力了:

_before = et.fromstring(_before)

但是,这给了我这个错误:

lxml.etree.XMLSyntaxError: error parsing attribute name, line 1, column 972

浏览文档,我看不到告诉 lxml 的方法,我给你一个 xml 片段,我现在不在乎我是否有一个根元素(我实际上是将所有这些构建为我去)。

有谁知道我如何通过 lxml 一个 XML 代码片段并获得一个编码的 lxml 片段?

标签: pythonxmllxml

解决方案


我现在正在使用 parser.feed 选项,它实际上也显示了这个解析错误,但是看看我写到这里的 XML,我现在明白了原因。似乎我的一些手写 XML(我知道这是有理由不这样做的)有几个小问题,当我使用 fragment_fromstring 时实际上正在为我纠正。修复这些错误并使用 parser.feed 似乎已经解决了这个问题。


推荐阅读