我有一个XMl,其中一个属性例如是model:name。
升级到Grails 2后,它无法使用以下命令提取属性
it。@“ model:name” .text()
我已经阅读了使用XmlSlurper解析xml时如何读取带连字符的属性名称(例如model_name),并且也遵循了链接,但是没有任何内容指向如何处理冒号属性的文档。
xml:lang属性的最终解决方案: it.attributes()['{ http://www.w3.org/XML/1998/namespace } lang']
您所谓的“冒号属性”实际上是名称空间中的属性。XmlSlurper的默认行为是忽略名称空间,即当您要求它提供不带冒号的节点名称时,它将查找具有该本地名称的节点,而不管名称空间如何。所以你可能会发现
it.@name
查找您感兴趣的属性。如果这不起作用,则需要调用declareNamespace
从XmlSlurper返回的对象,以将前缀映射到model:
XML文档中对应的名称空间URI (查找xmlns:model="http://example.com"
或XML中的任何内容)
def xml = new XmlSlurper().parse(...).declareNamespace(
model:"http://example.com")
然后model:name
应该工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句