Evernote XML 上的 Python LXML 解析错误

标签 python xml lxml evernote

我正在尝试解析Evernote Markup Language (ENML) 与 Python 2.7 中的 lxml。 ENML 是 XHTML 的超集。

from StringIO import StringIO
import lxml.etree as etree

if __name__ == '__main__':
    xml_str = StringIO('<?xml version="1.0" encoding="UTF-8"?>\r\n<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">\r\n\r\n<en-note style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">\nA really simple example. &nbsp;Another sentence.\n</en-note>')
    tree = etree.parse(xml_str)

上面的代码出现错误:

XMLSyntaxError: Entity 'nbsp' not defined, line 5, column 32

如何成功解析 ENML?

最佳答案

  可以被 HTML 解析器理解,而不是 XML 解析器:

from StringIO import StringIO
import lxml.html as LH
if __name__ == '__main__':
    xml_str = StringIO('<?xml version="1.0" encoding="UTF-8"?>\r\n<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">\r\n\r\n<en-note style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">\nA really simple example. &nbsp;Another sentence.\n</en-note>')
    tree = LH.parse(xml_str)
    print(LH.tostring(tree))

关于Evernote XML 上的 Python LXML 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15102954/

相关文章:

python - 如何检查主机的 DNS TXT 记录值?

android - 如何解析 Android 布局 xml 文件以创建帮助页面的副本?

python - 让 BeautifulSoup4+lxml 与 cx_freeze 一起工作需要什么?

python - lxml:Element addnext() 和 insert() 在处理 tail 时的区别

python - 切片 jax.numpy 数组时性能下降

python - 从文件创建参数列表的列表

java - 如何使用 XStream 将同名节点反序列化为两个不同的类

sql - 如何在 SQL Server 的存储过程中从 xml 节点创建游标?

python - 如何强制将所有 namespace 声明附加到根元素?

Python - For 循环和计数器