2010-12-14 25 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; 
} 

どのようにしなければなりません私は、XMLファイルのこのタイプを解析するために、これを調整します

<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

マイナーニックピック:どのように解析するかについての問題ではなく、解析は既に行われており、結果はDOMツリーですが、解析された結果を何かに使用する方法についてです。 – StaxMan

答えて

0

あなたは、AndroidでXMLを解析するSAXParserを使用することができます。

Here is a detailed tutorial with exampleおよびalso another one here by IBM developerWorks

DOMパーサーは遅いですし、それは多くのデータを含むXML文書 をロードする場合、多く メモリを消費します。 の解決策としてSAXパーサーを検討してください。SAXはDOMよりも高速で、 のメモリを使用しないでください。

このコードを試してみますが、まだこのコードをテストしていません。これは、すべてのノードを再帰的に横断し、ELEMENT_NODEVector<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

私は両方のリンクを見たことがあります(私は私が投稿する前にGoogleでした)が、私は学ぶ/別のXMLメソッドを実装したくないです。私は上に示したようにDOMパーサを持っています。新しいXMLファイルに調整したいだけです。しかし、とにかくtnx;) – Galip

+0

Fine!私は私のアプリでSAXParserを実装します:)希望は簡単です.. – Galip

+0

あなたはDOMParserで解析することができますが、何に?データを格納し、それらを使用するコンテナオブジェクトがありますか? – Tarik

関連する問題