xml - 使用XmlSlurper解析xml时如何读取冒号属性名称(例如model:name)

标签 xml grails groovy xmlslurper

我有一个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/

相关文章:

facebook - 如何从 Grails 中的 Spring Security 的 Facebook 身份验证中获取 Facebook 用户名、电子邮件、电话号码等

groovy - 找不到匹配方法 - JIRA/Groovy

xml - 如何使用xpath连接多个节点

java - XML 文档到字符串

xml - PowerShell XML 输出

javascript - 在 JavaScript 中使用 XMLHttpRequest.send()

grails - Groovy HTTPBuilder POST : missing method(s)

grails - 创建 grails <g :link>

android - 如何将显式 API 模式应用于除 app 模块之外的所有模块?

json - 在 Groovy 中序列化为 JSON 时更改字段名称