2013-04-11 17 views
5

Mein GPathResult kann in einem der drei WegeGPathResult ..presence oder Abwesenheit eines Knotens

1) Name der Knoten einen Namen Knoten haben vorhanden ist und hat einen Wert ab: John

2) Name Knoten existiert, hat aber keinen Wert darin.

3) Kein Name Knoten existiert überhaupt.

In Groovy-Code, wie kann ich unterscheiden zwischen den oben genannten 3 Fällen mit meinem Gmapresult. Benütze ich etwas wie gPathResult. value()! = null?

Pesudo Code:

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 
} 

Antwort

-1

-Test, wenn gpath Ergebnis ist null Anwesenheit zu überprüfen, und .text() Verfahren zur Elementwert (leeren String, wenn kein Wert) verwenden. Hier ist ein Beispiel:

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

(die gpath[it] Notation wegen der Variablenersetzung ist, wenn Sie nach einem bestimmten Element aussehen wie b dann können Sie gpath.b verwenden)

+1

XmlParser gibt keinen 'GPathResult' sondern ein' Node'. Diese beiden verhalten sich im Rahmen dieser Frage anders, da Ihr anderer Pfad NIEMALS ausgelöst wird. – Vampire

+0

Vampire ist korrekt, [hier] (http://groovy-lang.org/processing-xml.html) ist ein Dokument mit einigen Informationen über 'XmlParser' und' Node' im Gegensatz zu 'XmlSlurper' und' GPathResult'. –

4

Sie müssen testen size(). mit dem Beispiel von Olivier zu bleiben, nur so festgelegt, dass GPathResult verwendet wird, und dass es mit beiden Werken, XmlSlurper und XmlParser hier den Code:

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