Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 递归方法不起作用-ArrayList_Java_Xml_Algorithm_Recursion_Xml Parsing - Fatal编程技术网

Java 递归方法不起作用-ArrayList

Java 递归方法不起作用-ArrayList,java,xml,algorithm,recursion,xml-parsing,Java,Xml,Algorithm,Recursion,Xml Parsing,我有一个递归方法的问题,该方法将XML文件的所有元素都放在ArrayList中 <?xml version="1.0" encoding="iso-8859-1"?> <country> <name> France </name> <city> Paris </city> <region> <name> Nord-Pas De Calais </name>

我有一个递归方法的问题,该方法将XML文件的所有元素都放在ArrayList中

<?xml version="1.0"  encoding="iso-8859-1"?>
<country>
  <name> France </name>
  <city> Paris </city>
  <region>
     <name> Nord-Pas De Calais </name>
     <population> 3996 </population>
     <city> Lille </city>
  </region>
  <region>
     <name> Valle du Rhone </name>
     <city> Lyon </city>
     <city> Valence </city>
  </region>
 </country>
但是我的函数没有完成所有的Get all元素:结果是[country,name,city,region,region],但是我想得到所有元素[country,name,city,region,name,population,region,name,city,city],我认为递归调用不在正确的位置,这是我的代码

public static ArrayList<String> TreeToArray (Node node)
{
    ArrayList<String> ArrayNoeud = new ArrayList<String> ();

   ArrayNoeud.add(node.getNodeName());


    NodeList nl = node.getChildNodes();
    for (int i = 0; i < nl.getLength(); i++) {
      Node n = nl.item(i);

      if (n instanceof Element)
      {
           ArrayNoeud.add(n.getNodeName());

      }

    TreeToArray(n);
    }


    return ArrayNoeud;  



}

您正在递归,但是没有将返回值赋给任何对象

而不是

 TreeToArray(n);
试试这个:

 ArrayNoeud.addAll( TreeToArray(n) );

您正在递归,但是没有将返回值赋给任何对象

而不是

 TreeToArray(n);
试试这个:

 ArrayNoeud.addAll( TreeToArray(n) );

您正在抛出递归结果而不使用它。 您应该添加如下内容:

ArrayNoeud.addAll(TreeToArray(n)); // Didn't notice it was java :) AddRange is C#
此外,变量名应以小写字母开头


看到英法复合词不抱怨总是很奇怪:

您在不使用递归结果的情况下抛出递归结果。 您应该添加如下内容:

ArrayNoeud.addAll(TreeToArray(n)); // Didn't notice it was java :) AddRange is C#
此外,变量名应以小写字母开头

看到英法复合词不抱怨总是很奇怪: