ParseError: undefined entity while parsing XML file in Python

ParseError: undefined entity while parsing XML file in Python

我有一个包含多个 article 节点的大 XML 文件。我只包含了一个问题。我尝试在 Python 中解析它以过滤一些数据,但出现错误

File "<string>", line unknown
ParseError: undefined entity &Ouml;: line 90, column 17

XML 文件的示例

<?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE dblp SYSTEM "dblp.dtd">
    <dblp>
        <article mdate="2019-10-25" key="tr/gte/TR-0146-06-91-165" publtype="informal">
            <author>Alejandro P. Buchmann</author>
            <author>M. Tamer &Ouml;zsu</author>
            <author>Dimitrios Georgakopoulos</author>
            <title>Towards a Transaction Management System for DOM.</title>
            <journal>GTE Laboratories Incorporated</journal>
            <volume>TR-0146-06-91-165</volume>
            <month>June</month>
            <year>1991</year>
            <url>db/journals/gtelab/index.html#TR-0146-06-91-165</url>
        </article>
    </dblp>

根据我在 Google 中的搜索,我发现如果节点名称有问题,就会出现这种错误。然而,错误的行是文本中的第二个author

这是我的Python代码

with open('xaa.xml', 'r') as xml_file:
    xml_tree = etree.parse(xml_file)

Ouml实体的声明大概在DTD中(dblp.dtd),但是ElementTree不支持外部DTD。 ElementTree 仅识别直接在 XML 文件中(在 "internal subset" 中)声明的实体。这是一个工作示例:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE dblp [
<!ENTITY Ouml 'Ö'>
]>
<dblp>
  <article mdate="2019-10-25" key="tr/gte/TR-0146-06-91-165" publtype="informal">
    <author>Alejandro P. Buchmann</author>
    <author>M. Tamer &Ouml;zsu</author>
    <author>Dimitrios Georgakopoulos</author>
    <title>Towards a Transaction Management System for DOM.</title>
    <journal>GTE Laboratories Incorporated</journal>
    <volume>TR-0146-06-91-165</volume>
    <month>June</month>
    <year>1991</year>
    <url>db/journals/gtelab/index.html#TR-0146-06-91-165</url>
  </article>
</dblp>

要正确解析问题中的 XML 文件,您需要更强大的 XML 支持外部 DTD 的库。 lxml 是个不错的选择。