我使用 lxml 来解析从另一个系统导出的 XML 文件:
xmldoc = open(filename)
etree.parse(xmldoc)
但我得到:
lxml.etree.XMLSyntaxError:实体
'eacute' 未定义,第 4495 行,
第46栏
显然它存在 unicode 实体名称问题 - 但我该如何解决这个问题呢?通过 open() 还是 parse()?
Edit:我忘记将我的 DTD 包含在同一个文件夹中 - 它现在就在那里并且具有以下声明:
<!ENTITY eacute "é">
在 xmldoc 中被这样引用(并且始终如此):
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE DScribeDatabase SYSTEM "foo.dtd">
但我仍然遇到同样的问题... DTD 也需要在 Python 中声明吗?
eacute
不是 XML 中预定义的实体。要包括一个é
XML 文件中的实体引用,它必须有一个<!DOCTYPE>
指向定义实体的 DTD(例如 XHTML 1.0 DTD)的声明。
如果 XML 使用é
但没有<!DOCTYPE>
,它的格式不正确,导出它的系统需要修复。
(没有充分的理由使用实体引用来表示é
在 XML 文件中。人物参考é
如果文件不能简单地包含原始 UTF-8,则无需实体定义即可在任何地方被理解é
因为某些原因。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)