我试图在 Groovy 中使用 XmlSlurper 解析 XML 时读取属性。当我尝试读取连字符属性model-number
时,出现异常。
<router name="b" id="x" manufacturer-id="e" model-number="a"/>
我试图在 Groovy 中使用 XmlSlurper 解析 XML 时读取属性。当我尝试读取连字符属性model-number
时,出现异常。
<router name="b" id="x" manufacturer-id="e" model-number="a"/>
def a = "<router name='b' id='x' manufacturer-id='e' model-number='a'/>"
def router = new XmlSlurper().parseText(a)
println router.@'manufacturer-id'
println router.@'name'
println router.@'id'
println router.@'model-number'
我在控制台上试过这个,它正在工作。
如果您的元素包含破折号等字符,您可以用双引号将元素名称括起来。
例子:
def myXML = '<router name="b" id="x" manufacturer-id="e" model-number="a"/>'
def router = new XmlSlurper().parseText(myXML)
def attr = router.@"model-number".text()
测试并为我工作。
您还可以通过使用变量来处理连字符(和非连字符)属性,这有时仅在通用处理具有未知或不一致属性的 XML(例如,提交的 Web 表单)时很有帮助。
在这里,您可以看到一个循环遍历 XML 中所有属性的示例,无论它们是否有连字符:
def xml = "<router name='b' id='x' manufacturer-id='e' model-number='a'/>"
def router = new XmlSlurper().parseText(xml)
for (String attrib : router.attributes().keySet()) {
value = router.@"$attrib".text()
println("${attrib}=${value}")
}