2013-04-11 21 views
5

My GPathResult có thể có một nút tên theo một trong 3 cáchGPathResult ..presence hay vắng mặt của một nút

1) nút tên là hiện tại và có giá trị ví dụ: John

2) tên nút tồn tại, nhưng không có giá trị trong đó.

3) Không có nút tên nào cả.

Trong mã Groovy, làm thế nào để tôi phân biệt giữa 3 trường hợp trên bằng cách sử dụng Gpathresult của tôi. Tôi có sử dụng một cái gì đó như gPathResult. value()! = null?

đang 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 
} 

Trả lời

-1

Kiểm tra nếu kết quả gpath là null để kiểm tra sự hiện diện, và sử dụng phương pháp .text() cho giá trị phần tử (chuỗi rỗng nếu không có giá trị). Dưới đây là một ví dụ:

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

(ký hiệu gpath[it] là do sự thay thế biến, nếu bạn tìm kiếm một yếu tố cụ thể như b sau đó bạn có thể sử dụng gpath.b)

+1

XmlParser không trả lại một 'GPathResult' nhưng một' Node'. Hai hành vi này khác nhau trong phạm vi của câu hỏi này, vì con đường khác của bạn sẽ KHÔNG BAO GIỜ được kích hoạt. – Vampire

+0

Ma cà rồng là chính xác, [ở đây] (http://groovy-lang.org/processing-xml.html) là một tài liệu có một số thông tin về 'XmlParser' và' Node' thay vì 'XmlSlurper' và' GPathResult'. –

4

Bạn phải kiểm tra cho size(). Để ở lại với ví dụ về Olivier, chỉ cần cố định để GPathResult được sử dụng và nó làm việc với cả hai, XmlSlurperXmlParser đây mã:

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" 
    } 
} 
Các vấn đề liên quan