我需要返回给定标记的出现次数,例如,用户将提供指向xml文件的链接以及要查找的标记的名称,它将返回该特定标记的出现次数。到目前为止,我的代码仅适用于父节点的子节点,而我还需要检查子节点的所有子节点,并且我不太了解如何遍历xml文件的所有元素
答案 0 :(得分:0)
修改代码以正确使用递归。您需要始终递归,不仅仅是标签具有您要查找的名称,因为孩子们仍然可能拥有您正在寻找的名称。此外,您需要将递归调用的结果添加到总和中。像这样:
private static int tagCount(XMLTree xml, String tag) {
assert xml != null : "Violation of: xml is not null";
assert tag != null : "Violation of: tag is not null";
int count = 0;
if (xml.isTag()) {
for (int i = 0; i < xml.numberOfChildren(); i++) {
if (xml.child(i).label().equals(tag)) {
count++;
}
count = count + tagCount(xml.child(i), tag);
}
}
return count;
}