使用递归查找java中XML文件中特定标记的出现情况

使用递归查找java中XML文件中特定标记的出现情况,java,xml,recursion,Java,Xml,Recursion,我需要返回给定标记的出现次数,例如,用户将提供指向xml文件的链接和要查找的标记的名称,它将返回该特定标记的出现次数。到目前为止,我的代码只适用于父节点的子节点,而我还需要检查子节点的所有子节点,我完全不知道如何迭代xml文件的所有元素。修改代码以正确使用递归。您需要始终递归,而不仅仅是在标记具有您要查找的名称时,因为子项仍然可能具有您要查找的名称。此外,还需要将递归调用的结果添加到sum中。大概是这样的: private static int tagCount(XMLTree xml, Str

我需要返回给定标记的出现次数,例如,用户将提供指向xml文件的链接和要查找的标记的名称,它将返回该特定标记的出现次数。到目前为止,我的代码只适用于父节点的子节点,而我还需要检查子节点的所有子节点,我完全不知道如何迭代xml文件的所有元素。

修改代码以正确使用递归。您需要始终递归,而不仅仅是在标记具有您要查找的名称时,因为子项仍然可能具有您要查找的名称。此外,还需要将递归调用的结果添加到sum中。大概是这样的:

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;
}
private静态int标记计数(XMLTree-xml,字符串标记){
断言xml!=null:“违反:xml不是null”;
断言标记!=null:“违反:标记不为null”;
整数计数=0;
if(xml.isTag()){
for(int i=0;i
修改代码以正确使用递归。您需要始终递归,而不仅仅是在标记具有您要查找的名称时,因为子项仍然可能具有您要查找的名称。此外,还需要将递归调用的结果添加到sum中。大概是这样的:

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;
}
private静态int标记计数(XMLTree-xml,字符串标记){
断言xml!=null:“违反:xml不是null”;
断言标记!=null:“违反:标记不为null”;
整数计数=0;
if(xml.isTag()){
for(int i=0;i
递归调用的结果也应添加到count中。只进行简单的基于XPath的搜索//childname如何?递归调用的结果也应添加到count中。只进行简单的基于XPath的搜索//childname如何?