2011-09-20 16 views
5

Estoy usando el analizador DOM de Java para analizar un archivo XML.Documento - ¿Cómo obtener el valor de una etiqueta por su nombre?

vamos a decir que tengo el siguiente código XML

<?xml version="1.0"?> 

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

</xml> 

me gusta para obtener el valor de 'punto final'. Puedo hacerlo con el siguiente fragmento de código. (Suponiendo que ya he analizado sintácticamente con DocumentBuilder)

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

¿Es posible obtener un valor de un campo por el nombre de un campo? Me gusta ....

Node nValue = nodeList.getByName("endPoint") algo como esto ...?

Respuesta

5

Debe utilizar XPath para este tipo de tareas:

//endPoint/text() 

o:

/config/dotcms/endPoint/text() 

Por supuesto Java tiene un built-in support para XPath:

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

// ¡¡Genial !! ¡Lo aprecio! Breve, pero útil respuesta. – Moon

0

Usted también podría usar jOOX, un jquery -like DOM wrapp er, para escribir aún menos código:

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

// Using XPath 
String text2 = $(document).xpath("//endPoint").text(); 
Cuestiones relacionadas