我的GPathResult可以在3种方式之一中使用名称节点
1)名称节点存在且具有值 例如:约翰
2)名称节点存在,但没有值。
3)根本没有名称节点。
在Groovy代码中,我如何使用我的Gpathresult区分上述3个案例。我是否使用像gPathResult这样的东西。 value()!= null?
Pesudo代码:
if(name node is present and has a value){
do this
}
if(name node exists, but has no value in it){
do this
}
if( No name node exists at all){
do this
}
答案 0 :(得分:4)
您必须测试size()
。
要继续使用Olivier的示例,只需修复以便GPathResult
使用XmlSlurper
和XmlParser
这两个代码:
def xml="<a><b>yes</b><c></c></a>"
def gpath = new XmlSlurper().parse(new ByteArrayInputStream(xml.getBytes()))
["b", "c", "d" ].each() {
println it
if (gpath[it].size()) {
println " exists"
println gpath[it].text() ? " has value" : " doesn't have a value"
} else {
println " does not exist"
}
}
答案 1 :(得分:-1)
测试gpath结果是否为null以检查存在,并使用.text()
方法作为元素值(如果没有值,则为空字符串)。
这是一个例子:
def xml="<a><b>yes</b><c></c></a>"
def gpath = new XmlParser().parse(new ByteArrayInputStream(xml.getBytes()))
["b", "c", "d" ].each() {
println it
if (gpath[it]) {
println " exists"
println gpath[it].text() ? " has value" : " doesn't have a value"
} else {
println " does not exist"
}
}
(gpath[it]
表示法是因为变量替换,如果您查找特定元素,例如b
,那么您可以使用gpath.b
)