2011-11-25 81 views
0

我在解析Android中的XML時遇到了一些麻煩。我不知道,如果它的XML解析這就是問題所在,或者只在我試圖顯示在屏幕上,因爲無法用DOM解析XML DOM

setListAdapter(new ArrayAdapter<String>(ANDROIDXMLActivity.this, android.R.layout.simple_list_item_1, stopNumbers)); 

不會顯示任何東西。下面的代碼在java程序中完美工作。

網址:http://maps.travelsouthyorkshire.com/iGNMSearchService.asmx/FindObjectsWithinExtent?xMin=435360&yMin=387260&xMax=435960&yMax=387860&zoomLevel=0

try { 
     ArrayList<Double> xCords = new ArrayList<Double>(); 
     ArrayList<Double> yCords = new ArrayList<Double>(); 
     ArrayList<String> stopNumbers = new ArrayList<String>(); 
     ArrayList<String> bussLocations = new ArrayList<String>(); 
     DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory 
       .newInstance(); 
     DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
     Document doc = docBuilder 
       .parse(new URL(
         "http://maps.travelsouthyorkshire.com/iGNMSearchService.asmx/FindObjectsWithinExtent?xMin=435360&yMin=387260&xMax=435960&yMax=387860&zoomLevel=0") 
         .openStream()); 

     // normalize text representation 
     doc.getDocumentElement().normalize(); 
     NodeList listOfObjects = doc.getElementsByTagName("iGNMObject"); 
     for (int s = 0; s < listOfObjects.getLength(); s++) { 
      Node firstPersonNode = listOfObjects.item(s); 

      if (firstPersonNode.getNodeType() == Node.ELEMENT_NODE) { 

       Element firstPersonElement = (Element) firstPersonNode; 
       NodeList stopNumList = firstPersonElement 
         .getElementsByTagName("StopNumber"); 
       Element ageElement = (Element) stopNumList.item(0); 
       if (ageElement != null) { 
        NodeList textAgeList = ageElement.getChildNodes(); 

        String stop = ((Node) textAgeList.item(0)) 
          .getNodeValue().trim(); 
        stopNumbers.add(stop); 

        // ------ 
        // ------- 
        NodeList xPosList = firstPersonElement 
          .getElementsByTagName("XPosition"); 
        Element firstNameElement = (Element) xPosList.item(0); 
        NodeList textFNList = firstNameElement.getChildNodes(); 

        String temp2 = ((Node) textFNList.item(0)) 
          .getNodeValue().trim(); 
        double x = Double.parseDouble(temp2); 
        xCords.add(x); 

        // ------- 
        NodeList yPosList = firstPersonElement 
          .getElementsByTagName("YPosition"); 
        Element lastNameElement = (Element) yPosList.item(0); 
        NodeList textLNList = lastNameElement.getChildNodes(); 
        String temp3 = ((Node) textLNList.item(0)) 
          .getNodeValue().trim(); 
        double y = Double.parseDouble(temp3); 
        yCords.add(y); 

        // ---- 

        NodeList stopAkaList = firstPersonElement 
          .getElementsByTagName("StopAka"); 
        Element stopAka = (Element) stopAkaList.item(0); 
        NodeList textStopAKAList = stopAka.getChildNodes(); 
        String plats = ((Node) textStopAKAList.item(0)) 
          .getNodeValue().trim(); 
        bussLocations.add(plats); 
       } else { 

       } 

      }// end of if clause 
     }// end of for loop with s var 

     setListAdapter(new ArrayAdapter<String>(ANDROIDXMLActivity.this, 
       android.R.layout.simple_list_item_1, stopNumbers)); 

    } catch (Exception e) { 

    } 

} 

}}

+0

你是什麼意思stopNumbers.add(「2」)被忽略?調試時是否「跳過」這段代碼? – Jack

+0

將「1」和「2」添加到列表中,但不添加其他信息 – Carlj901

+0

您是否調試過單步執行此代碼以查看究竟會發生什麼?我的猜測是listOfObjects.size()== 0或其他。 – Jack

回答

0

解決它。我忘了在清單中添加Internet權限。

+1

當系統允許你這樣做時,不要忘記將其標記爲已接受。另外,你介意一點這個答案嗎? –

+0

那麼,應用程序無法訪問URL beaucse,它沒有這樣做的權限。這導致程序捕捉到一個異常,而不是通過XML URL讀取,從而讓我的列表爲空,並在屏幕上顯示任何內容。 – Carlj901

+0

athor不允許他的應用程序通過AndroidManifext.xml中的INTERNET權限訪問互聯網。這個問題與XML解析無關。 應用程序沒有XML解析,可能是由於他的代碼片段末尾的可怕的異常處理。 –