1

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 element) : 結果は [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;  



}
4

2 に答える 2

7

再帰していますが、戻り値を何にも割り当てていません。

それ以外の

 TreeToArray(n);

これを試して:

 ArrayNoeud.addAll( TreeToArray(n) );
于 2012-05-15T23:31:48.040 に答える
1

再帰結果を使用せずにスローしています。次のようなものを追加する必要があります。

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

また、変数名は小文字で始める必要があります。

英語とフランス語の複合語を見るのはいつも奇妙です(不平ではありません):)

于 2012-05-15T23:33:11.517 に答える