
[英]Is there a way to force lxml to parse Unicode strings that specify an encoding in a tag?
[英]lxml unicode entity parse problems
我使用lxml如下来分析从另一个系统导出的XML文件:
xmldoc = open(filename)
etree.parse(xmldoc)
但即时通讯:
lxml.etree.XMLSyntaxError:未定义实体“ eacute”,行4495,第46列
显然,Unicode实体名称存在问题-但是我将如何解决呢? 通过open()还是parse()?
编辑:我忘记了将我的DTD包含在同一个文件夹中-它现在在那里并且具有以下声明:
<!ENTITY eacute "é">
并在xmldoc中这样被引用(并且一直如此):
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE DScribeDatabase SYSTEM "foo.dtd">
但是我仍然遇到同样的问题……DTD是否也需要在Python中声明?
eacute
不是XML中的预定义实体。 包含é
在XML文件中的实体引用中,它必须具有指向定义该实体的DTD(例如XHTML 1.0 DTD)的<!DOCTYPE>
声明。
如果XML使用é
但没有<!DOCTYPE>
,它格式不正确,导出它的系统需要修复。
(没有充分的理由使用实体引用来表示XML文件中的é
。在没有实体定义的情况下,字符引用é
到处都可以理解,如果该文件不能简单地包含原始的UTF- é
。某些原因。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.