2010-12-14 89 views
0

我对XML解析颇为陌生,我有解析XML的方法。只有这种方法适用于只有1个子节点的简单XML布局。如何在Android中解析这个XML?

我现在要解析与有有孩子的孩子的孩子的一个XML文件(得到它:)?)

这是解析法我现在有:

protected Map<String, Maatschappij> getAutopechTel() { 
    Map<String, Maatschappij> telVoorAutopech = new HashMap<String, Maatschappij>(); 

    try { 
     DocumentBuilder builder = DocumentBuilderFactory.newInstance() 
       .newDocumentBuilder(); 
     Document doc = builder.parse(getAssets().open("autopech.xml")); 
     NodeList nl = doc.getElementsByTagName("dienst"); 
     for (int i = 0; i < nl.getLength(); i++) { 
      Node node = nl.item(i); 
      Maatschappij maat = new Maatschappij(); 

      maat.setNaam(Xml.innerHtml(Xml.getChildByTagName(node, "naam"))); 
      maat.setTel(Xml.innerHtml(Xml.getChildByTagName(node, "tel"))); 

      telVoorAutopech.put(maat.getTel(), maat); 
     } 
    } catch (Exception e) { 
    } 
    return telVoorAutopech; 
} 

必须如何

<Message> 

    <Service>Serviceeee</Service> 

     <Owner>Bla</Owner> 

     <LocationFeedTo>Too</LocationFeedTo> 

     <Location>http://maps.google.com/?q=52.390001,4.890145</Location> 

     <Child1> 

     <Child1_1> 

      <Child1_1_1>ANWB</Child1_1_1> 

     </Child1_1> 
     </Child1> 
<Message> 
+0

Minor nitpick:问题不在于如何解析 - 解析已经完成,结果是DOM树 - 而是关于如何将解析结果用于某些事情。 – StaxMan 2010-12-14 16:37:45

回答

0

您可以使用SAXParser在Android中解析XML:

我为了解析这个类型的XML文件调整此

Here is a detailed tutorial with examplealso another one here by IBM developerWorks

DOM解析器是缓慢的,消耗大量 存储器如果加载其中含有大量数据的XML文档 。请 考虑将SAX解析器作为 的解决方案吧,SAX比DOM更快并且使用内存更少的 。

试试这个,但我还没有测试过这个代码。它递归遍历所有节点,并将ELEMENT_NODE添加到Vector<Node>

public void traverseNodes(Node node, Vector<Node> nodeList) 
{ 
    if(node.getNodeType() == Node.ELEMENT_NODE) 
    { 
     nodeList.add(node); 
     if(node.getChildNodes().getLength() >= 1) 
     { 
      NodeList childNodeList = node.getChildNodes(); 
      for(int nodeIndex = 1;nodeIndex < childNodeList.getLength(); nodeIndex++) 
      { 
       traverseNodes(childNodeList.item(nodeIndex),nodeList); 
      } 
     } 
    } 

} 
+0

我见过这两个链接(是的,我做过谷歌之前,我发布),但我不想学习/实现一个不同的XML方法。我有上面显示的DOM解析器,我只是想调整它到我的新XML文件。但反正tnx;) – Galip 2010-12-14 15:16:59

+0

好!我将在我的应用程序中实现SAXParser :)希望这很简单.. – Galip 2010-12-14 15:26:55

+0

您可以使用DOMParser解析它,但是解析为什么?你有容器对象来存储数据并使用它们吗? – Tarik 2010-12-14 15:39:23