我必须解析具有任何标签名称的XML(混合,上层,下层等),我不知道事先会是什么情况。如何在ElementTree中使findall完全不区分大小写?
# Does not work
variables = message.findall("VaRiAbLE")
答案 0 :(得分:6)
您只需从树中获取字符串,将其缩小并重新制作树。那么它应该是可解析的
import xml.etree.ElementTree as ET
def to_parseable(tree):
t = ET.tostring(tree)
t = t.lower()
return ET.fromstring(t)
答案 1 :(得分:1)
正规救援。请注意,这在性能方面可能很可怕,但在元素提取的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")