我有一个XMl,其中一个属性是型号名称。
升级到Grails 2后,它无法使用以下命令提取属性
it。@“model:name” .text()
我已经阅读了How to read the hyphenated attribute names (Eg. model_name) while parsing xml using XmlSlurper并也遵循了链接,但是没有任何内容使我指向如何处理冒号属性的文档。
xml:lang属性的最终解决方案:
it.attributes()['{http://www.w3.org/XML/1998/namespace} lang']
最佳答案
您所谓的“冒号属性”实际上是 namespace 中的一个属性。 XmlSlurper的默认行为是忽略 namespace ,即当您要求它提供不带冒号的节点名称时,它将查找具有该本地名称的节点,而不管 namespace 如何。所以你可能会发现
it.@name
查找您感兴趣的属性。如果这不起作用,则需要在从XmlSlurper返回的对象上调用
declareNamespace
,以将前缀映射到与XML文档中的model:
对应的 namespace URI(请参见用于xmlns:model="http://example.com"
或XML中的任何内容)def xml = new XmlSlurper().parse(...).declareNamespace(
model:"http://example.com")
然后
model:name
应该可以工作。
关于xml - 使用XmlSlurper解析xml时如何读取冒号属性名称(例如model:name),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21929139/