我正在使用XmlSlurper解析一段XML,并且需要查找xml元素值。
这样做的挑战是,我并不总是确定xml文档中的大小写是否正确,因此我需要以任何可能的方式查找该元素。
例:
<start>
<Header>
<Elem>1234</Elem>
</Header>
</start>
获取 Elem 的值将是:
def parsedXml = new XmlSlurper().parseText(xml)
parsedXml.Header.Elem
但是当大小写不同时,我也需要找到它。.那么,当大小写不同时,有没有一种方法可以表达我找到Elem的值?
<start>
<header>
<elem>1234</elem>
</header>
</start>
def parsedXml = new XmlSlurper().parseText(xml)
parsedXml.header.elem
最佳答案
可能有更好的解决方案(例如,似乎可以使用XPath到compare node names case insensitively),但是可以将文档转换为小写字母。如果您关心文档内文本节点的大小写,则只能将标签元素转换为小写:
def toLowerCaseXmlTags(xmlText) {
xmlText.replaceAll(/<[^<>]+>/) { it.toLowerCase() }
}
text = """
<start>
<Header>
<Elem>1234</Elem>
<SomeText>This should PRESERVE casing</SomeText>
</Header>
</start>
"""
def xml = new XmlSlurper().parseText(toLowerCaseXmlTags(text))
assert xml.header.elem.text() == '1234'
assert xml.header.sometext.text() == 'This should PRESERVE casing'
快速又肮脏,但是:P
关于xml - 使用XmlSlurper/GPath查找不区分大小写的xml元素值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10972146/