Problem con XML

Iniciado por Codename!!, 25 Marzo 2013, 12:07 PM

0 Miembros y 1 Visitante están viendo este tema.

Codename!!

Hola chicos! estoy intentando parsear bien este archivo "xml" y lo entrecomillo porque dentro tiene un bonito XMI que fastidia un poquito.

Tengo este XML:
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:language1="language1">
  <language1:Number id="PI">
    <has value="3"/>
    <has value="1"/>
    <has value="4"/>
  </language1:Number>
  <language1:Number id="888">
    <has value="88"/>
  </language1:Number>
</xmi:XMI>


La idea es obtener los valores de los "has" de cada "language1:Number" pero sin usar una referencia a el, es decir que me saque los hijos o los elementos (me lio)  de los dos language1:Number.

Tengo este método:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
DocumentBuilder db = dbf.newDocumentBuilder();

Document doc = db.parse(new FileInputStream(new File(
"C:\\model.language1")));

NodeList entries = doc.getElementsByTagName("language1:Number");

for( int i = 0;  i< entries. getLength(); i++ )
{
// se extrae el nodo
Node empleado = entries.item(i);
System.out.println(empleado.getNodeName());
   //se valida que nodo sea del tipo element_node
Element elemento = (Element) empleado;
todosLosAtributos(elemento);
}

public void todosLosAtributos(Element element) {
System.out.println("List attributes for node: " + element.getNodeName());
NamedNodeMap attributes = element.getAttributes();
int numAttrs = attributes.getLength();
for (int i = 0; i < numAttrs; i++) {
Attr attr = (Attr) attributes.item(i);
String attrName = attr.getNodeName();
String attrValue = attr.getNodeValue();
System.out.println("Found attribute: " + attrName + " with value: "
+ attrValue);
}
}


Pero la salida es esta, es como si no detectara los elementos internos..
language1:Number
List attributes for node: language1:Number
Found attribute: id with value: PI
language1:Number
List attributes for node: language1:Number
Found attribute: id with value: 888
------------------------------------
No te dejes mover por las masas, se tu mismo.





Codename!!

Obtuve la solución!

Para el que este en algo parecido, la solución esta en empezar a tirar de getChildren() y de ahí empiezas a sacar del que tenga cosas!
No te dejes mover por las masas, se tu mismo.