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
------------------------------------