Para los que quieran parsear un xml en java les facilito el codigo necesario, como observacion el xml no sera un archivo guardado sino que sera recibido como un String.

 

1. imports necesarios (Fundamental)

import java.io.ByteArrayInputStream;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

2. Funcion que recibe un String y lo convierte en un objeto Document

public Document string2DOM(String s){

Document tmpX=null;
DocumentBuilder builder = null;

try{
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
}catch(javax.xml.parsers.ParserConfigurationException error){
int coderror=10;
String msgerror=»Error crando factory String2DOM «+error.getMessage();
return null;
}
try{

tmpX=(Document)builder.parse(new ByteArrayInputStream(s.getBytes()));

}catch(org.xml.sax.SAXException error){
int coderror=10;
String msgerror=»Error parseo SAX String2DOM «+error.getMessage();
return null;
}catch(IOException error){
int coderror=10;
String msgerror=»Error generando Bytes String2DOM «+error.getMessage();
return null;
}
return tmpX;
}

3. Funcion que recibe el un nodo y devuelve el contenido de algun tag interno especificando el tagName


private  String getTextValue(Element ele, String tagName) {
String textVal = null;
NodeList nl = ele.getElementsByTagName(tagName);
if(nl != null && nl.getLength() > 0) {
Element el = (Element)nl.item(0);
textVal = el.getFirstChild().getNodeValue();
}

return textVal;
}

Ejemplo:

<persona>

<nombre>Ana</nombre>

</persona>

docEle->es el objeto tag persona, piensa en el objeto tag como lo manejas en javascript

para sacar el nombre escribirias: getTextValue(docEle,»nombre»);

4. Como usar todo junto

String xml="<persona><nombre>Ana</nombre><telefono>2673353</telefono><telefono>2234456</telefono></persona>";

Document doc=string2DOM(xml);
Element docEle=doc.getDocumentElement();

//para obtener el nombre

String nombre=getTextValue(docEle,»nombre»);

//para obtener telefonos

NodeList nl = docEle.getElementsByTagName(«telefono»);
if(nl != null && nl.getLength() > 0) {
for(int i = 0 ; i < nl.getLength();i++) {

//get the employee element
Element el = (Element)nl.item(i);
String telefono=el.getFirstChild().getNodeValue();

nl.add(telefono);

}
}

El modo en que se maneja el xml es muy parecido a que si lo hicieras en javascript. Espero les sirva