【问题标题】:Getting lxml to encode an XML fragment让 lxml 对 XML 片段进行编码
【发布时间】:2020-10-20 18:52:00
【问题描述】:

我在使用 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 片段,我不在乎我是否有一个根元素(我实际上是在构建所有我去的时候)。

有人知道我如何将一个 XML 代码片段传递给 lxml 并获得一个编码的 lxml 片段吗?

【问题讨论】:

  • "xml 片段"?如果没有根元素,则不是 XML。
  • 这很公平......但我正在尝试先构建该片段以添加到根目录,但不希望应用 HTML 规则。

标签: python xml lxml


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    相关资源
    最近更新 更多