Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Codename!! en 25 Marzo 2013, 12:07 pm



Título: Problem con XML
Publicado por: Codename!! en 25 Marzo 2013, 12:07 pm
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:
Código:
<?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:
Código:
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);
}
Código:
	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..
Código:
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
------------------------------------


Título: Re: Problem con XML
Publicado por: Codename!! en 25 Marzo 2013, 19:42 pm
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!