我需要通过id递归地找到xml Node,如下所示:
<categories>
<category id="1">
</category>
<category id="2">
<category id="3">
</category>
<category id="4">
<category id="5">
</category>
</category>
</category>
</categories>
我正在使用DocBuilder。
我知道有方法getElementById()
,但它在我的情况下不起作用,我想说,当我在根节点时,我想找到一个id="5"
的元素
有可能吗?
答案 0 :(得分:1)
使用根节点调用方法:
Element element = getElementById(rootElement, "5");
和递归方法:
public Element getElementById(Element element, String desiredId){
if(desiredId.equals(element.getAttribute("id")))
return element;
for(int i=0; i < element.getChildNodes().getLength(); i++){
Node node = element.getChildNodes().item(i);
if (node.getNodeType() == Node.ELEMENT_NODE){
Element child = getElementById((Element) node, desiredId);
if(child != null)
return child;
}
}
return null;
}
答案 1 :(得分:0)
为什么不做类似下面的伪代码
FindChild(parent, id)
{
if(parent.getChildById(id)) return parent.getChildById(id);
foreach(parent.child)
{
Element found = FindChild(child, id);
if(found) return found;
}
return NULL;
}
如果具有指定ID的元素出现在层次结构中的多个位置(即返回第一次出现或构建列表),则必须决定该怎么做