【发布时间】:2016-11-09 16:11:15
【问题描述】:
xml 文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE dblp SYSTEM "dblp.dtd">
<dblp>
<title>Schnelle Multiplikation von Polynomen über Körpern der Charakteristik 2.</title>
</dblp>
我用 python 传递这个文件如下,我还有一个 .dtd 文件:
import xml.etree.ElementTree as ET
tree=ET.parse(r"../data/test_dblp.xml")
root=tree.getroot()
for i in range(0,9):
print root[0][i].text
报错:
xml.etree.ElementTree.ParseError: 未定义实体 'ü';
【问题讨论】:
-
dblp.dtd中有什么内容?那里定义了像&uuml;这样的实体吗? -
我没有找到 ü在 .dtd 文件中。但我确实知道 ü代表一些拉丁字符。
-
&uuml;是 html 实体(对于ü),而不是 xml,因此除非实体在 dtd 中明确声明,否则您的 xml 无效。 -
dblp XML 导出中的所有命名实体都在随附的 dblp.dtd 文件中定义,请参阅dblp.org/xml。不过,您必须确保在 Python 脚本的路径中找到与系统相关的 DTD 文件。