Obtener nombres de etiquetas de etiquetas específicas

Usando XPath.

tengo este documento:

<?xml version="1.0"?>
<root>
  <items>
    <item1>
      <tag1>1</tag1>
      <tag2>DFGGFDGF</tag2> 
      <tag3>3</tag3>
    </item1>

    <item2>
      <tag1>DFGD</tag1>
      <tag2>SDFSDFFSD</tag2>    
      <tag3>SDFSFDFS</tag3>
    </item2>
  </items>
</root>

Quiero obtener los nombres de las etiquetas de los item1 elemento.

Ahora uso esto para obtener el valor de las etiquetas:

XPathExpression expr = xpath.compile("//"+ node_name +"/*/text()");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
  System.out.println(nodes.item(i).getNodeValue()); 
}

¿Cómo obtengo los nombres de las etiquetas? tag1, tag2, tag3?

preguntado el 31 de julio de 12 a las 10:07

3 Respuestas

Dar así

xpath.compile("//"+ node_name +"/*")

.......................

for (int i = 0; i < nodes.getLength(); i++) {
  System.out.println(nodes.item(i).getNodeName()); 
}

Respondido 31 Jul 12, 11:07

¿Estás imprimiendo nombre de nodo o valor de nodo? - Sreejith

En primer lugar, no use text() al final de su XQuery. Necesitas los nodos mismos. En segundo lugar, no tome el valor del nodo, necesita el nombre del nodo en su lugar.

XPathExpression expr = xpath.compile("//"+ node_name +"/*");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
  System.out.println(nodes.item(i).getNodeName()); 
}

Respondido 31 Jul 12, 11:07

Trata org.w3c.dom.Node#getNodeName() para obtener el nombre del nodo.

Ver también "org.w3c.dom.Nodo"

Respondido 31 Jul 12, 10:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.