2012-07-31 117 views
0

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

回答

1

首先,在你的XQuery结束不使用文本()。你需要节点本身。其次,不要取节点值,而需要节点名称。

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

给这样

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

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

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

试过这个,它打印null – 2012-07-31 10:07:46

+0

你打印nodename或nodevalue? – sreejith 2012-07-31 10:19:02