Java GPathResult..是否存在节点
我的GPathResult可以通过以下三种方式之一拥有名称节点 1) 名称节点存在并且具有值 例:约翰 2) 名称节点存在,但其中没有值。 3) 根本不存在名称节点 在Groovy代码中,如何使用Gpathresult区分上述三种情况。我是否使用gPathResult之类的东西。value()=空的 比苏多代码:Java GPathResult..是否存在节点,java,xml,xpath,groovy,gpath,Java,Xml,Xpath,Groovy,Gpath,我的GPathResult可以通过以下三种方式之一拥有名称节点 1) 名称节点存在并且具有值 例:约翰 2) 名称节点存在,但其中没有值。 3) 根本不存在名称节点 在Groovy代码中,如何使用Gpathresult区分上述三种情况。我是否使用gPathResult之类的东西。value()=空的 比苏多代码: if(name node is present and has a value){ do this } if(name node exists, but has no value
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
}
测试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"
}
}
def xml=“是”
def gpath=new XmlParser().parse(new ByteArrayInputStream(xml.getBytes()))
[“b”、“c”、“d”]各(){
打印它
if(gpath[it]){
println“存在”
println gpath[it].text()?“有值”:“没有值”
}否则{
println“不存在”
}
}
(使用
gpath[it]
符号是因为变量替换,如果您查找特定元素,如b
,则可以使用gpath.b
)您必须测试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"
}
}
def xml=“是”
def gpath=new XmlSlurper().parse(new ByteArrayInputStream(xml.getBytes()))
[“b”、“c”、“d”]各(){
打印它
if(gpath[it].size()){
println“存在”
println gpath[it].text()?“有值”:“没有值”
}否则{
println“不存在”
}
}
XmlParser不返回GPathResult
,而是返回节点
。在这个问题的范围内,这两种行为是不同的,因为您的else路径永远不会被触发。Vamper是正确的,它是一个包含有关XmlParser
和Node
的一些信息的文档,而不是XmlSlurper
和GPathResult
。