6

我的 GPathResult 可以通过以下 3 种方式之一拥有名称节点

1)名称节点存在并具有值ex:John

2) 名称节点存在,但其中没有值。

3) 根本不存在名称节点。

在 Groovy 代码中,我如何使用我的 Gpathresult 区分上述 3 种情况。我是否使用类似 gPathResult 的东西。值()!=空?

伪代码:

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
}
4

2 回答 2

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"
    }
}
于 2015-08-27T12:14:23.920 回答
-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]符号是因为变量替换,如果你寻找一个特定的元素,比如bthen 你可以使用gpath.b

于 2013-04-17T16:05:46.833 回答