如何在使用XmlSlurper解析xml时读取已克隆的属性名称(例如,model:name)

时间:2014-02-21 08:30:12

标签: xml grails groovy xmlslurper

我有一个XMl,其属性是例如模型:名称

升级到Grails 2后,无法使用

提取属性

它@ “模型:名称”。的.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}郎']

1 个答案:

答案 0 :(得分:2)

您所称的“coloned属性”实际上是名称空间中的属性。 XmlSlurper的默认行为是忽略名称空间,因为当你向它请求没有冒号的节点名时,它将找到具有该本地名称的节点而不管名称空间。所以你可能会发现这只是

it.@name

找到您感兴趣的属性。如果这不起作用,那么您需要在从XmlSlurper返回的对象上调用declareNamespace,以将前缀映射到与之对应的命名空间URI XML文档中的model:(查找XML中的xmlns:model="http://example.com"或其他内容)

def xml = new XmlSlurper().parse(...).declareNamespace(
    model:"http://example.com")

然后model:name应该有用。