我有一个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应该可以工作。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!