【发布时间】:2015-06-26 11:46:20
【问题描述】:
我有一段代码可以为节点生成 xpath。但它不会创建它的数组结构。例如,如果一个元素有两个同名的元素,我需要提供索引以适当地指向它们。如下图。
<abc>
<def>
</hij>
</def>
<def>
</lmn>
</def>
</abc>
现在,要获得 hij 的 xpath,我需要这样的东西:
//abc[1]/def[1]/hij
要获得 lmn 的 xpath,我需要这样的东西:
//abc[1]/def[2]/lmn
我有一段代码可以简单地给我//abc/def/hij 和//abc/def/lmn
private String getXPath(Node root, String elementName)
{
for (int i = 0; i < root.getChildNodes().getLength(); i++)
{
Node node = root.getChildNodes().item(i);
if (node instanceof Element)
{
if (node.getNodeName().equals(elementName))
{
return "\\" + node.getNodeName();
}
else if (node.getChildNodes().getLength() > 0)
{
if(map.containsKey(node.getNodeName()))
map.put(node.getNodeName(), map.get(node.getNodeName())+1);
else
map.put(node.getNodeName(), 1);
this.xpath = getXPath(node, elementName);
if (this.xpath != null){
return "\\" + node.getNodeName() +"["+map.get(node.getNodeName())+"]"+ this.xpath;
}
}
}
}
return null;
}
有人可以帮我添加数组结构吗?
【问题讨论】: