[英]How do I parse XML that contains HTML entities?
我有一個將XML作為字符串並嘗試使用xml
解析的腳本
這是我正在使用的代碼的示例
from xml.etree.ElementTree import fromstring
my_xml = """
<documents>
<record>Hello< &O >World</record>
</documents>
"""
xml = fromstring(my_xml)
當我運行代碼時,我得到一個ParseError
Traceback (most recent call last):
File "C:/Code/Python/xml_convert.py", line 7, in <module>
xml = fromstring(my_xml)
File "C:\Python27\lib\xml\etree\ElementTree.py", line 1300, in XML
parser.feed(text)
File "C:\Python27\lib\xml\etree\ElementTree.py", line 1642, in feed
self._raiseerror(v)
File "C:\Python27\lib\xml\etree\ElementTree.py", line 1506, in _raiseerror
raise err
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 3, column 18
如XML中的無效字符所述,這是由於具有HTML實體<
, >
和&
我該如何處理這些實體,以便XML將它們讀取為純文本?
您可以將lxml
Parser與lxml
recover=True
標志一起使用:
In [25]: import lxml.etree as ET
In [26]: from lxml.etree import XMLParser
In [27]: my_xml = """
....: <documents>
....: <record>Hello< &O >World</record>
....: </documents>
....: """
In [28]: parser = XMLParser(recover=True)
In [29]: element = ET.fromstring(my_xml, parser=parser)
In [30]: for text in element.itertext():
....: print(text)
....:
Hello >World
你不能做你所要的。 您的文檔不是格式正確的XML,任何兼容的XML解析器都會拒絕它。
您可以編寫使用正則表達式對其進行修復並將其制成XML的代碼,但是任何此類解決方案幾乎都肯定會出現錯誤和易出錯,並且會引起比其解決的問題更多的問題。
如果您真的不能從源頭上解決此問題,那么文檔格式正確,那么最好的選擇可能是利用人的智能手動修復它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.