我必須解析具有可能在任何情況下(混合,上,下等)的標籤名稱的XML,並且我不知道事件會是什麼。我怎樣才能讓findall在ElementTree中完全不區分大小寫?在Python中不區分大小寫的findall ElementTree
# Does not work
variables = message.findall("VaRiAbLE")
我必須解析具有可能在任何情況下(混合,上,下等)的標籤名稱的XML,並且我不知道事件會是什麼。我怎樣才能讓findall在ElementTree中完全不區分大小寫?在Python中不區分大小寫的findall ElementTree
# Does not work
variables = message.findall("VaRiAbLE")
您只需從樹中獲取字符串,小寫它,然後重新制作樹。那麼它應該可以解析
import xml.etree.ElementTree as ET
def to_parseable(tree):
t = ET.tostring(tree)
t = t.lower()
return ET.fromstring(t)
正則表達式來拯救。請注意,這在性能方面可能很可怕,但對於從元素中提取XML屬性非常有用。
def getInsensitiveAttrbiute(element, key) :
keyRegex = re.compile(key, re.IGNORECASE)
for key in element.attrib.keys() :
if keyRegex.match(key) :
return element.attrib[key]
raise KeyError
element = ET.fromstring('<FOO src="BAR" />')
print getInsensitiveAttrbiute(element, "sRc")
因爲'XML'區分大小寫。 – kev 2012-02-25 03:25:10
我知道XML區分大小寫。我不控制這個XML的生成,所以問題是...如何找到可能出現在任何情況下的標籤?提升iptree做到這一點。我假設ElementTree也會。 – 01100110 2012-02-25 19:56:45