Groovy XmlSlurper无法获取具有默认命名空间的lang属性
我有以下xmlGroovy XmlSlurper无法获取具有默认命名空间的lang属性,xml,groovy,Xml,Groovy,我有以下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”字符串。
<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
def doc=new XmlSlurper().parse(inputstream).declareNamespace(xmlns:'http://www.cdisc.org/ns/odm/v1.3')
列表文本=[]
defs=doc.item.find{it@]:lang“=”en”}.each{
text.add(it.text())
}
打印文本
问题是忽略该属性是错误的。我注册了默认名称空间,在find闭包中尝试了xml:lang、:lang、lang的组合,但没有成功
有人知道我做错了什么吗
谢谢前缀
xml
总是指名称空间http://www.w3.org/XML/1998/namespace
-这是固定的,不需要在XML文档中声明
所以试试看
def doc = new XmlSlurper().parse(inputstream).declareNamespace(
xml:'http://www.w3.org/XML/1998/namespace')
然后,
xml:lang
应该可以像您期望的那样工作。嗨,我试过这个,但没有成功。如果在文本节点上调用attributes().size(),则得到1,但在执行getAt(0)时,返回null。我也尝试过使用XmlParser进行解析,它给出了相同的结果。