Java - Leer XML desde Java

 
Vista:

Leer XML desde Java

Publicado por Vanessa (2 intervenciones) el 08/10/2010 02:30:40
Hola amigos.

Necesito que por favor me ayuden a como leer un XML desde Java.

Les cuento que yo lo he logrado parcialmente, tengo el siguiente XML super sencillo:

Code:

<nodo_raiz>
<nodo_hijo nombre_atributo="Probando">
</nodo_hijo>
</nodo_raiz>

Y tengo el siguiente codigo en Java con el cual he logrado leer el valor "Probando".

Code:

public void procesarXML(String string_xml) {
try {
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
doc = builder.parse(new InputSource(new StringReader(string_xml)));//el xml lo pasamos como String

Node raiz = doc.getFirstChild();
recorrerXML(raiz.getChildNodes(), 0);
} catch (SAXException e) {
} catch (IOException e) {
} catch (ParserConfigurationException e) {
}
}

/*
*piso = 0 -> nodo padre
*piso = 1 -> nodo hijo
*piso = 2 -> nodo nieto
*piso = n -> asi sucesivamente
*/
private void recorrerXML(NodeList lst, int piso) {
if (lst != null) {
for (int i = 0; i < lst.getLength(); i++) {
obtenerDatos(lst.item(i), piso);
addMessage(lst.item(i).getNodeName());
}
}
}

private void obtenerDatos(Node n, int piso) {
NamedNodeMap atributos = n.getAttributes();
Node aux = atributos.getNamedItem("nombre_atributo");
System.out.println(aux.getNodeName());
}

Hasta aqui todo bien, el problema lo tengo cuando tengo que leer el siguiente XML:

Code:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<rif:Rif xmlns:rif="rif" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" rif:numeroRif="V101234567">
<rif:Nombre>JUAN CARLOS LOPEZ LOPEZ</rif:Nombre>
<rif:AgenteRetencionIVA>NO</rif:AgenteRetencionIVA>
<rif:ContribuyenteIVA>SI</rif:ContribuyenteIVA>
<rif:Tasa />
</rif:Rif>

Cuando trato de leer este archivo XML con el codigo java que les coloque, no puedo leer el valor de los nodos, puedo leer el nombre pero no el valor, siempre devuelve null. Si se fijan este ultimo XML es un poco mas "extraño" que el primero que les mande, al menos para mi.

Les agradeceria mucho su ayuda para poder leer este archivo XML.

Desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Leer XML desde Java

Publicado por Javier (41 intervenciones) el 08/10/2010 05:37:05
Hola,

el tema esta en que para acceder al valor entre 2 tags tenes que usar getTextContent() de ese nodo, y no buscar sus atributos, pq estos son dentro del nodo cabecera.

Asi si te los mostaria:

//------------------------

public void procesarXML(String string_xml) {

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
Document doc = null;

try {
DocumentBuilder builder = factory.newDocumentBuilder();
File f =new File(string_xml);
System.out.println(f.getAbsolutePath());
doc = builder.parse(f);
Node raiz = doc.getFirstChild();
recorrerXML(raiz.getChildNodes(), 0);
} catch (Exception e)
{
System.out.println(e.toString());
}
}

/*
*piso = 0 -> nodo padre
*piso = 1 -> nodo hijo
*piso = 2 -> nodo nieto
*piso = n -> asi sucesivamente
*/
private void recorrerXML(NodeList lst, int piso) {
if (lst != null) {
for (int i = 0; i < lst.getLength(); i++) {
System.out.println(lst.item(i).getNodeName() + ": " + lst.item(i).getTextContent());

}
}
}

//----------------

Cualquier duda, avisame.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar