Python元素树中不区分大小写的findall
我必须解析具有标记名的XML,这些标记名在任何情况下都可能是(混合的、较高的、较低的等等),我不知道事先会是什么情况。如何使findall在ElementTree中完全不区分大小写Python元素树中不区分大小写的findall,python,xml,Python,Xml,我必须解析具有标记名的XML,这些标记名在任何情况下都可能是(混合的、较高的、较低的等等),我不知道事先会是什么情况。如何使findall在ElementTree中完全不区分大小写 # Does not work variables = message.findall("VaRiAbLE") 您只需从树中获取字符串,将其小写,然后重新生成树。那么它应该是可解析的 import xml.etree.ElementTree as ET def to_parseable(tree):
# 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")
def GetInsensitiveATRTRBIUTE(元素,键):
keyRegex=re.compile(key,re.IGNORECASE)
对于元素中的键。attrib.keys():
如果keyRegex.匹配(键):
返回元素.attrib[key]
上升键错误
元素=ET.fromstring(“”)
打印getInsensitiveAttrbiute(元素,“sRc”)
因为XML
是区分大小写的。我知道XML是区分大小写的。我不控制XML的生成,所以问题是。。。findall如何搜索在任何情况下都可能出现的标记?我就是这么做的。我想ElementTree也会的谢谢。在我尝试过的所有解决方案中,这种方法效果最好。我同意我不应该这样做,因为XML的创建者应该在标记和属性名称中使用一致的大小写,但是当它超出您的控制,并且您必须处理这种XML时,ElementTree中的这种方法就起作用了。Wtf,您为什么要这样做?至少使用正则表达式使其仅适用于标记和属性名,天哪。这不好。上面的代码也将有用的数据转换为小写。