2013-10-24 37 views
0

我試圖分析XML數據,以及遇到的問題是關於當我使用的Python xml.etree.ElemenTree,讓HTML實體

import xml.etree.ElementTree as ET 
tree = ET.parse(my_xml_file) 
root = tree.getroot() 
for regex_rule in root.findall('.//regex_rule'): 
    print(regex_rule.get('input')) #this ".get()" method turns &lt; into <, but I want to get &lt; as written 
    print(regex_rule.get('input') == "(?&lt;!\S)hello(?!\S)") #prints out false because ElementTree's get method turns &lt; into < , is that right? 

HTML實體這裏是XML文件內容:

<rules> 
<regex_rule input="(?&lt;!\S)hello(?!\S)" output="world"/> 
</rules> 

我將不勝感激,如果任何人都可以直接我得到的字符串是從輸入端的XML屬性,無需轉換

&lt; 

< 

回答

2

xml.etree.ElementTree做完全符合標準的東西,這是XML字符實體的理解是,他們實際上做編碼引用的字符,應被理解爲這樣的解碼。

如果您確實需要對文字&lt;進行編碼,則首選的方法是將輸入文件更改爲使用&amp;lt;(即我們對&進行XML編碼)。

如果你不能改變你的輸入文件格式,那麼你可能需要使用不同的模塊,或者自己寫解析器:xml.etree.ElementTree轉換實體以及之前你可以做任何有意義與輸出。

+0

感謝您的輸入。看來我運氣不好,使用xml.etree.ElementTree。我會訴諸某種其他創造性的解決方案。 (我在一個環境中,我不能輕易安裝其他模塊,如lxml等)。我基本上檢查XML和JSON文件中存在的規則。在json文件中,沒有html實體,並且不應該有。我會接受你的回答作爲答案。謝謝。 – GiantEnemyCrab