我想获取所有节点的属性名称的值。我的xml是
<branches>
<branch-area name="abc">
<branch>
<branch-name> xyz Street</branch-name>
</branch>
</branch-area>
<branch-area name="def 11">
<branch>
<branch-name>pqr</branch-name>
</branch>
</branch-area>
<branch-area name="ghi 14">
<branch>
<branch-name>jkl</branch-name>
</branch>
</branch-area>
</branches>
我正在使用下面的代码
String xpathExpression = "//branch-area[@name]";
NodeList list = (NodeList) XPathFactory.newInstance().newXPath().evaluate(xpathExpression,inputSource, XPathConstants.NODESET);
for(int i=0; i<list.getLength();i+=1)
{
System.out.println(list.item(i).getFirstChild().getNodeValue());
}
但是我得到一个空字符串你能告诉我我错在哪里吗?
答案 0 :(得分:4)
//branch-area[@name]
将返回元素节点 - 具有branch-area
属性的name
个元素。如果您想要属性节点本身,请使用
//branch-area/@name
并且您不需要循环中的getFirstChild()
,因为属性节点直接保存值而不是文本节点子节点。