archivo XML. Aca detallo como esta formado el archivo
<xml>
<control>
<hijo1>propiedad</hijo1>
<hijo2>propiedad</hijo2>
<hijo3>propiedad</hijo3>
...
<hijoN>propiedad</hijoN>
</control>
<control>
...
</control>
<control>
...
</control>
</xml>
Lo que tengo que hacer es levantar todos los elementos </control> y sus
respectivos hijos, de a 1 control por vez. El problema es que no se los
nmbres que no se los nombres quie van a tener los hijos ni cuantos van a
ser.
El codigo que estoy usando es:
Cita:
Cuando levanto el nodo <control> lo levanta sin problemas. Se me complicapublic class XMLParser {
public XMLParser() { }
public void dameTodos() throws SAXException, IOException,
ParserConfigurationException {
Document file = domFact.newDocumentBuilder().parse("c:\\prueba.xml ");
//abro mi archivo xml
NodeList nodos = file.getElementsByTagName("control");
//Me traigo todos los tags <control> a una NodeList
System.out.println(nodos.getLength());
//imprime la longitud de la nodelist (hasta aqui va todo bien)
Node nodo = nodos.item(0);
//Me traigo el primer nodo, en un futuro esto se iterara y se traeran
todos los nodos de a 1 por vez.
System.out.println(nodo.getChildNodes().getLength( ));
//imprime: (la cantiadd de hijos de mi tag <control>) * 2 + 1 <-- esto es
lo que esta mal
//si hago System.out.println(nodo); lo imprime sin errores
NodeList nodo2 = (NodeList) nodo;
//casteo el nodo a una NodeList
System.out.println(nodo2.getLength());
//imprime: (la longitud de la nodelist) * 2 + 1 <-- lo pruebo de otra
forma e imprime lo mismo
}
}
public XMLParser() { }
public void dameTodos() throws SAXException, IOException,
ParserConfigurationException {
Document file = domFact.newDocumentBuilder().parse("c:\\prueba.xml ");
//abro mi archivo xml
NodeList nodos = file.getElementsByTagName("control");
//Me traigo todos los tags <control> a una NodeList
System.out.println(nodos.getLength());
//imprime la longitud de la nodelist (hasta aqui va todo bien)
Node nodo = nodos.item(0);
//Me traigo el primer nodo, en un futuro esto se iterara y se traeran
todos los nodos de a 1 por vez.
System.out.println(nodo.getChildNodes().getLength( ));
//imprime: (la cantiadd de hijos de mi tag <control>) * 2 + 1 <-- esto es
lo que esta mal
//si hago System.out.println(nodo); lo imprime sin errores
NodeList nodo2 = (NodeList) nodo;
//casteo el nodo a una NodeList
System.out.println(nodo2.getLength());
//imprime: (la longitud de la nodelist) * 2 + 1 <-- lo pruebo de otra
forma e imprime lo mismo
}
}
todo cuando quiero conseguir los hijos del mismo. Si hago un getLenght me
trae la cantidad de hijos * 2 + 1. Proble casteandolo a Element pero es lo
mismo...
¿Alguno tiene idea que estoy haciendo mal? Pruebenlo si quieren, el xml es
facil de hacer y el codigo es simplemente eso. Me estoy empezando a
frustrar.
Agradezco sus respuestas :3