2012-05-15 27 views
1

我有一個遞歸方法,即把一個XML文件的所有元素在一個ArrayList遞歸方法不起作用 - ArrayList中<String>

<?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; 



} 

回答

7

你遞歸但隨後你沒有把返回值分配給任何東西。

代替

TreeToArray(n); 

試試這個:

ArrayNoeud.addAll(TreeToArray(n)); 
1

你扔遞歸的結果,而不使用它。 你應該添加這樣的事情:

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

而且,你的變量名稱必須以小寫開頭。

看到英​​語法語複合詞(不是抱怨)總是很奇怪:)