这是我无法解决的问题。我有一个.xml文件,不是与父母和孩子,但与大孩子和多孙子。每个元素名称都是唯一的,所以我需要一个方法来查找并返回可搜索元素。到目前为止我的代码:如何在循环中使用递归方法退出?
public static Element findElement(Element current, String nameOfElement) {
Element searchedElement = null; // this element I want to return
List children = current.getChildren(); // current is a root element passed to method
Iterator iterator = children.iterator();
//label:
while (iterator.hasNext()) {
Element child = (Element)iterator.next();
if (child.getName().equals(nameOfElement)) {
searchedElement = child; // on some level it founds it
System.out.println("!!!"); // it's just a marker to see that action happens
//break label;
break;
}
findElement(child, nameOfElement);
}
return searchedElement;
}
正常情况下,如果执行条件周期应根据打破阻止,但这种情况不会发生。另外我有一个关于添加标签的想法。 (它在代码中有注释),但它也不起作用。递归启动并清除变量搜索元素的值。 我找到了一个解决方案,但它看起来很丑,我不知道上面添加的代码不起作用。我的解决方案是添加而不是递归调用findElement(child,nameOfElement);此编号:
Element el = findElement(child, nameOfElement);
if (el != null && el.getName().toLowerCase().equals((nameOfElement).toLowerCase())) {
searchedElement = el;
return searchedElement;
}
请帮忙找解!
'findElement(儿童,nameOfElement);'你丢弃递归调用的返回值(你不要将它存储在'searledElement'中)。 –