python - 让 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 片段?
解决方案
我现在正在使用 parser.feed 选项,它实际上也显示了这个解析错误,但是看看我写到这里的 XML,我现在明白了原因。似乎我的一些手写 XML(我知道这是有理由不这样做的)有几个小问题,当我使用 fragment_fromstring 时实际上正在为我纠正。修复这些错误并使用 parser.feed 似乎已经解决了这个问题。
推荐阅读
- python - 在 mac 上安装 Django+MySql
- php - PHP 无法连接到实时 Web 服务器上的 MySql 数据库
- scala - 简单推理算子 Apache Flink
- matlab - 在 Matlab 中使用多个坐标裁剪图像
- javascript - 如何使用 React、fetch 和 Django REST 上传图像
- java - 加权图 - 找到从 X 到 y 的所有路径,最大停靠点
- mongodb - .mongo' 不是内部或外部命令、可运行程序或批处理文件
- android - 在视图 API 级别<21 中录制视频播放
- html - 想要有不同的边框底部尺寸和背景尺寸
- android - Android 通知:应用程序名称旁边的字符串,使用 setCustomContentView