我有以下xml
<group xmlns="http://www.cdisc.org/ns/odm/v1.3">
<item>
<text xml:lang="en">Mild</text>
<text xml:lang="fr">Legere</text>
</item>
<group>
我想从xml中获取所有“en”字符串。 我用以下groovy代码解析它
def doc = new XmlSlurper().parse(inputstream).declareNamespace(xmlns:'http://www.cdisc.org/ns/odm/v1.3')
List<String> text = []
def s = doc.item.find{ it@":lang" = "en"}.each {
text.add(it.text())
}
println text
问题是接缝忽略了属性。我注册了默认命名空间,我在find闭包中尝试了xml:lang,:lang,lang的组合,但没有快乐。
有没有人知道我做错了什么。
由于
答案 0 :(得分:1)
xml
前缀始终引用名称空间http://www.w3.org/XML/1998/namespace
- 这是固定的in the namespaces specification,不需要在XML文档中声明。
所以试试
def doc = new XmlSlurper().parse(inputstream).declareNamespace(
xml:'http://www.w3.org/XML/1998/namespace')
然后xml:lang
应该按预期工作。