我有以下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的组合,但没有成功。
有人知道我做错了什么吗。
谢谢
发布于 2014-01-03 01:01:55
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应该会像您期望的那样工作。
https://stackoverflow.com/questions/20887664
复制相似问题