【问题标题】:Recursive method doesn't work - ArrayList<String>递归方法不起作用 - ArrayList<String>
【发布时间】:2012-05-15 23:27:00
【问题描述】:

我有一个递归方法的问题,它将 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>

但我的功能并没有全面完成(获取所有元素):结果是 [国家、名称、城市、地区、地区] 但我想获取所有元素 [国家、名称、城市、地区、名称、人口,地区,名称,城市,城市],我认为递归调用不在正确的位置,这是我的代码

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;  



}

【问题讨论】:

    标签: java xml algorithm recursion xml-parsing


    【解决方案1】:

    您正在递归,但是您没有将返回值分配给任何东西。

    而不是

     TreeToArray(n);
    

    试试这个:

     ArrayNoeud.addAll( TreeToArray(n) );
    

    【讨论】:

      【解决方案2】:

      您正在抛出递归结果而不使用它。 你应该添加这样的东西:

      ArrayNoeud.addAll(TreeToArray(n)); // Didn't notice it was java :) AddRange is C#
      

      另外,你的变量名应该以小写字母开头。

      看到一个英语法语复合词总是很奇怪(不是抱怨):)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-07
        • 2017-08-22
        • 1970-01-01
        相关资源
        最近更新 更多