lxml unicode实体解析问题

2023-12-11

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

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

但我得到:

lxml.etree.XMLSyntaxError:实体 'eacute' 未定义,第 4495 行, 第46栏

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

Edit:我忘记将我的 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 文件中。人物参考&#233;如果文件不能简单地包含原始 UTF-8,则无需实体定义即可在任何地方被理解é因为某些原因。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

lxml unicode实体解析问题 的相关文章

随机推荐