蟒蛇 - 解析Unicode字符XML到ElementTree的

问题描述:

我使用PDFminer,但它包含了一个错误,我得到以下无效的XML文件:蟒蛇 - 解析Unicode字符XML到ElementTree的

<?xml version="1.1" encoding="UTF-8"?> 
<string size="16">&#244;&#130;&#204;&#2;f&#198;&#135;&#143;&#11;*&#154;&#23;]&#214;&#20;[</string> 

当我试图用ElementTree我解析它“M收到以下错误:

bookXml = xml.etree.ElementTree.parse(filename) 
    File "C:\Users\User\Anaconda3\lib\xml\etree\ElementTree.py", line 1196, in parse 
    tree.parse(source, parser) 
    File "C:\Users\User\Anaconda3\lib\xml\etree\ElementTree.py", line 597, in parse 
    self._root = parser._parse_whole(source) 
xml.etree.ElementTree.ParseError: reference to invalid character number: line 1, column 36 

我认为要处理这种情况最好的办法是先解决XML,但如何?

+0

问题似乎是''(和其他几个)等于'U + 0002',AFAIK不是XML文件中的有效字符。 – rodrigo

+1

哦,XML版本是'“1.1”'!你不会每天都看到。那么我想'U + 0002'毕竟是正确的,但是你会很难找到兼容的工具... – rodrigo

我会在CDATA中包装违规的XML字符串。确认我尽快工作。例如:

<?xml version="1.1" encoding="UTF-8"?> 
<string><![CDATA[&#244;&#130;&#204;&#2;&#198;&#135;&#143;&#11;*&#154;&#23;&#214;&#20;]]></string> 

更多关于CDATA here

+0

这只是暂时的解决方案,因为现在我需要调用'html.unescape()'来获得所需的价值。 –