使用递归在java中查找XML文件中特定标记的出现位置

时间:2016-06-23 22:45:20

标签: java xml recursion

我需要返回给定标记的出现次数,例如,用户将提供指向xml文件的链接以及要查找的标记的名称,它将返回该特定标记的出现次数。到目前为止,我的代码仅适用于父节点的子节点,而我还需要检查子节点的所有子节点,并且我不太了解如何遍历xml文件的所有元素

1 个答案:

答案 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;
}