python - lxml unicode实体解析问题

标签 python xml unicode lxml

我使用 lxml 来解析从另一个系统导出的 XML 文件:

xmldoc = open(filename)
etree.parse(xmldoc)

但我得到:

lxml.etree.XMLSyntaxError: Entity 'eacute' not defined, line 4495, column 46

显然它在 unicode 实体名称方面存在问题 - 但我该如何解决这个问题呢?通过 open() 还是 parse()?

编辑:我忘记将我的 DTD 包含在同一个文件夹中 - 它现在就在那里并且具有以下声明:

<!ENTITY eacute "&#233;">

并且在 xmldoc 中被这样引用(并且始终如此):

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE DScribeDatabase SYSTEM "foo.dtd">

但是我仍然遇到同样的问题...DTD 也需要在 Python 中声明吗?

最佳答案

eacute不是 XML 中预定义的实体。包括 &eacute; XML 文件中的实体引用,它必须具有 <!DOCTYPE>指向定义实体的 DTD(例如 XHTML 1.0 DTD)的声明。

如果 XML 使用 &eacute;但没有<!DOCTYPE> ,它的格式不正确,导出它的系统需要修复。

(没有充分的理由在 XML 文件中使用实体引用来表示 é。如果文件不能简单地包含原始 UTF,则字符引用 &#233; 在没有实体定义的情况下在任何地方都可以理解-8 é 由于某种原因。)

关于python - lxml unicode实体解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2835077/

相关文章:

xml - XSLT 2.0-保留默认元素,删除重复的同级,按属性过滤不必要的条目

sql-server - SSIS包: convert between unicode and non-unicode string data types

python - 从三维数组中删除 NaN 行

java - 使用 SAXHandler 的 Java 中的解析器 XML 问题?

python - 如何制作通用的 PySide 单镜头插槽

java - Map 类的 onCreate() 和 onMapReady() 函数从未运行

java - 使用java和itext生成带有Unicode字符的PDF文档

CreateFile() 总是失败

python - 如何更改 Python 中饼图切片的顺序

python - 如何分别绘制多个图?