无法用DOM解析XML DOM

问题描述:

我在解析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

解决它。我忘了在清单中添加Internet权限。

+1

当系统允许你这样做时,不要忘记将其标记为已接受。另外,你介意一点这个答案吗? –

+0

那么,应用程序无法访问URL beaucse,它没有这样做的权限。这导致程序捕捉到一个异常,而不是通过XML URL读取,从而让我的列表为空,并在屏幕上显示任何内容。 – Carlj901

+0

athor不允许他的应用程序通过AndroidManifext.xml中的INTERNET权限访问互联网。这个问题与XML解析无关。 应用程序没有XML解析,可能是由于他的代码片段末尾的可怕的异常处理。 –