[英]How to handle CDATA in xml parser using ElementTree python?
[英]How to handle the encoding of the XML parser?
我嘗試對 XML 文件進行編碼,以便它可以毫無問題地讀取無效內容,但是它不起作用。
這是我的代碼:
import xml.etree.ElementTree as ET
import io
file_path = r'c:\data\MSM\Energy\XML-files\my_xml.xml'
with io.open(file_path, 'r', encoding='utf-8-sig') as f:
contents = f.read()
tree = ET.fromstring(contents)
這是我收到的:
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 62, column 48
這是 XML 文件第 62 行的樣子:
62 <Organisation>Blue & Logistics B.V.</Organisation>
我確定它與&
符號有關,那么我該如何編碼呢?
加載 xml 作為文本替換&
並使用 xml 解析器
import xml.etree.ElementTree as ET
with open('x.xml') as f:
xml = f.read()
xml = xml.replace("&", "&")
root = ET.fromstring(xml)
print(root)
xml文件
<r>
<Organisation>Blue & Logistics B.V.</Organisation>
</r>
輸出
<Element 'r' at 0x7f431e86bc70>
首先,它與編碼無關。 只是您的文件不包含格式良好的 XML。 找出創建它的方式、地點和時間,並修復創建它的過程。 內容中的&
需要轉義,通常為&
.
除非萬不得已,否則不要嘗試修復錯誤的 XML - 您很可能會使事情變得更糟,尤其是當您必須處理來自同一個不可靠來源的多個輸入文檔時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.