[英]how to keep & when parsing an xml file using lxml and xpath
我試圖使用lxml和xpath指令從輸入的xml文件中提取一些信息,並將其打印到輸出文件中。 讀取類似以下內容的xml標記時出現問題
...
<editor> Barnes & Nobel </editor>
...
為了解析xml文件並打印我使用的編輯器內容(xml中始終只有一個編輯器):
parser = etree.XMLParser(encoding='utf-8')
docTree = etree.parse( io.BytesIO(open(inputXML, "r").read()), parser )
print docTree.xpath('//editor')[0].text
我的問題是&
在某個時候被轉換為'&'
,這弄亂了我的進一步處理。
我如何確保&
符號不會被“解碼”嗎?
我知道這聽起來很冒昧,但是您希望數據為"&"
。 那就是XML元素的文本內容。 如果您以后需要將其處理為"&"
,那么您需要執行將XML(或HTML)編碼回"&"
,
您不能要求XML解析器解析您的文檔,並且不能將"&"
進入"&"
。 它不會做。
我終於在“ 如何逃離XML中的“&”符號以便它們在HTML中呈現為實體)的答案中找到了自己的問題的答案。 在我的代碼中,我添加了一個中間步驟,以確保所有&字符在輸出中保持不變。 這是
parser = etree.XMLParser(encoding='utf-8')
xmlText = open(inputXML, "r").read().replace("&", "&amp;")
docTree = etree.parse( io.BytesIO(xmlText), parser )
print docTree.xpath('//editor')[0].text
實際上,以防萬一,我已將相同的食譜應用於http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined%5Fentities%5Fin%5FXML中定義的XML中其他可能的實體
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.