lxml unicode实体解析问题

2024-06-25 22:59:45 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

但我得到了:

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

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

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

^{pr2}$

在xmldoc中引用(并且一直是这样):

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

但我还是有同样的问题。。。DTD也需要用Python声明吗?在


Tags: 文件声明parse系统notxmlopenfilename
1条回答
网友
1楼 · 发布于 2024-06-25 22:59:45

eacute不是XML中的预定义实体。要在XML文件中包含&eacute;实体引用,它必须有一个指向定义实体的DTD(例如XHTML1.0DTD)的<!DOCTYPE>声明。在

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

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

相关问题 更多 >