2011-09-20 27 views
5

Bir XML dosyasını ayrıştırmak için Java'nın DOM ayrıştırıcısını kullanıyorum.Belge - Bir etiketin değeri ada göre nasıl alınır?

ı aşağıdaki XML ben 'uç nokta' değerini almak ister

<?xml version="1.0"?> 

<config> 
    <dotcms> 
     <endPoint>ip</endPoint> 
    </dotcms> 
</config> 

</xml> 

olduğunu varsayalım. Aşağıdaki kod snippet'i ile yapabilirim. (Zaten DocumentBuilder'ı ile çözümlenir varsayarak)

NodeList nodeList = this.doc.getElementByTagName("dotcms"); 
Node nValue = (Node) nodeList.item(0); 
return nValue.getNodeValue(); 

bir alanın adında bir alanın değerini almak mümkün mü? Mesela ....

Node nValue = nodeList.getByName("endPoint") buna benzer bir ...?

//endPoint/text() 

ya: Sen görevlerin bu tür için XPath kullanmalıdır

cevap

5

XPath xpath = XPathFactory.newInstance().newXPath(); 
XPathExpression expr = xpath.compile("//endPoint/text()"); 
Object value = expr.evaluate(doc, XPathConstants.STRING); 
+0

// Great !! Bunu takdir ediyorum! Kısa ama yararlı bir cevap. – Moon

0

You:

Tabii
/config/dotcms/endPoint/text() 

Java yerleşik bir support XPath için vardır jOOX, bir jquery benzeri DOM sarmalayıcısını kullanabilir daha az kod yazmak için:

// Using css-style selectors 
String text1 = $(document).find("endPoint").text(); 

// Using XPath 
String text2 = $(document).xpath("//endPoint").text(); 
İlgili konular