获取标签特定标签的名称

时间:2012-07-31 09:40:24

标签: java xpath

使用XPath。

我有这个文档:

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

我想获取item1元素的标签名称。

现在我用它来获取标签值:

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()); 
}

如何获取代码名称:tag1tag2tag3

3 个答案:

答案 0 :(得分:2)

这样给出

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

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

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

答案 1 :(得分:1)

首先,不要在XQuery的末尾使用text()。您需要节点本身。其次,不要取节点值,而是需要节点名称。

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()); 
}

答案 2 :(得分:0)

尝试使用org.w3c.dom.Node#getNodeName()获取节点的名称。

另见"org.w3c.dom.Node"