我有一段代碼爲節點生成xpath。但它不會創建它的數組結構。例如,如果一個元素具有兩個同名的元素,我需要提供索引以適當地指向它們。下面是一個例子。現在如何使用java爲XML中的節點生成Xpath?
<abc>
<def>
</hij>
</def>
<def>
</lmn>
</def>
</abc>
,得到的XPath爲hij
,我需要這樣的:
//abc[1]/def[1]/hij
要獲得的XPath lmn
,我需要這樣的:
//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;
}
有人可以幫我追加這個數組結構嗎?