2013-01-25 107 views
2

我從網絡服務中下載了XML文件,我遇到的問題是我無法在循環之外正確顯示數據。從Java中的Hashmap數據循環訪問數組

XML格式設置如下:

<section> 
    <outage> 
     <dummydata>test</dummydata> 
    </outage> 
    <outage> 
     <dummydata>test2</dummydata> 
    </outage> 
</section> 
<section> 
    <outage> 
    <dummydata>test3</dummydata> 
    <outage> 
</section> 

注意某些部分可以有一個以上的停電。正如你可以看到下面的計數是正確的,但在一個停電是從4

01-24 22:54:49.176: I/System.out(1924): Outage Count per sect 1 
01-24 22:54:49.176: I/System.out(1924): Outage Count per sect 1 
01-24 22:54:49.176: I/System.out(1924): Outage Count per sect 1 
01-24 22:54:49.176: I/System.out(1924): Outage Count per sect 1 
01-24 22:54:49.176: I/System.out(1924): Outage Count per sect 4 
01-24 22:54:49.186: I/System.out(1924): Outage Count per sect 1 
01-24 22:54:49.186: I/System.out(1924): Outage Count per sect 1 
01-24 22:54:49.196: I/System.out(1924): Outages : 763674 

,這是做所有的工作代碼

for (int j = 0; j < arrPolygons.size(); j++) { 

    if (isPointInPolygon(point, arrPolygons.get(j).getPoints())) { 
     for (int outageInfo = 0; outageInfo < nodeList.getLength(); outageInfo++) { 
      outageData = new LinkedList<HashMap<String, String>>(); 
      Node ouageInfoNode = nodeList.item(outageInfo); 

       Element ouageInfoElement = (Element) ouageInfoNode; 
       NodeList ouageInfoList = ouageInfoElement.getElementsByTagName("Outage"); 
       System.out.println("Outage Count per sect "+ouageInfoList.getLength()); 
       for (int outages = 0; outages < ouageInfoList.getLength(); outages++) { 
        Node outageNode = ouageInfoList.item(outages); 
        Element outageDataElement = (Element) outageNode; 
        NodeList outageDataList =outageDataElement.getElementsByTagName("outagenum"); 

        outageDataElement = (Element) outageDataList.item(0); 
        outageDataList = outageDataElement.getChildNodes(); 

        outagenum = ((Node) outageDataList.item(0)) 
          .getNodeValue(); 

        //This is what I want to loop 
         HashMap<String, String> map = new HashMap<String, String>(); 
         map.put("outagenum", outagenum); 
        outageData.add(outages, map);       
        } 

       } 
        Toast.makeText(MainActivity.this, "Inside " + arrPolygons.get(j).getId()+" "+ outageData.get(j), Toast.LENGTH_LONG).show(); 

        System.out.println("Outages : " + outageData.get(0)); 

       } 
      } 

     } 
    } 

我的成果應該看起來像

Index 0 - {test,test2} 
Index 1 - {test3} 

有人可以告訴我在這個循環中我做錯了什麼嗎?

回答

0
for (int outageInfo = 0; outageInfo < nodeList.getLength(); outageInfo++) { 
      outageData = new LinkedList<HashMap<String, String>>(); 

應該

  outageData = new LinkedList<HashMap<String, String>>(); 
for (int outageInfo = 0; outageInfo < nodeList.getLength(); outageInfo++) { 
+0

我這樣做,現在是指數0-2,有關樣本是我需要它具有多個值爲零顯示指數0-1。想法? – Dwill