2017-10-12 138 views
0

我使用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

回答

1

我會在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()'來獲得所需的價值。 –