2013-04-11 4 views
5

내 GPathResult는 3 가지 방법 GPathResult의 ..presence 또는 노드의 부재

1

) 이름의 노드가 존재 중 하나에 이름 노드를 가지고 값을 전 가지고 있습니다 : 존

2) 이름을 노드가 있지만 값이 없습니다.

3) 이름 노드가 전혀 없습니다.

Groovy 코드에서 GPathresult를 사용하여 위의 3 가지 경우를 어떻게 구별합니까? gPathResult와 같은 것을 사용합니까? value()! = null?

Pesudo 번호 : gpath 결과의 존재를 확인하고, 소자 값 .text() 방법 (빈 문자열 값 없음의 경우)를 사용하여 널

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 
} 

답변

-1

시험 경우. 다음은 예입니다 :

+1

XmlParser가가'GPathResult'하지만'Node'을 반환하지 않습니다 은 GPathResult이 사용되도록 고정하고 여기에 모두 코드를 XmlSlurperXmlParser를 작동, 올리비에의 예제를 유지합니다. 이 두 가지는이 질문의 범위 내에서 다르게 행동합니다. 다른 경로는 결코 실행되지 않습니다. – Vampire

+0

뱀파이어가 맞습니다, [여기] (http://groovy-lang.org/processing-xml.html)는'XmlSlurper'와'GPathResult'와 반대로'XmlParser'와'Node'에 관한 정보를 담은 문서입니다. –

4

당신은 size()을 테스트해야

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.b을 사용할 수있는 특정 요소 등 b 찾는 경우 gpath[it] 표기법 때문에 변수 교체입니다).

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