2010-12-14 3 views
0

저는 XML 구문 분석에 익숙하지 않습니다. XML 구문 분석 방법이 있습니다. 이 방법은 단 하나의 자식 노드가있는 간단한 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

마이너 nitpick : 문제에 대해없는 방법 구문 분석하는 방법 - 구문 분석이 이미 수행하고 결과를 DOM 트리입니다 - 오히려 무언가로 구문 분석 된 결과를 사용하는 방법에있다. – StaxMan

답변

0

당신은 안드로이드에서 XML을 구문 분석 SAXParser를 사용할 수 있습니다 :

나는 XML 파일의이 유형을 분석하기 위해이를 조정

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

DOM 파서는 느리게하고 많은 양의 데이터를 포함하는 XML 문서 를로드하는 경우 많은 메모리를 소비합니다. 에 대한 해결책으로 SAX 파서를 고려하십시오. SAX는 DOM보다 빠르며 메모리를 사용하십시오.

이 코드는 시험해 보지 만 아직이 코드를 테스트하지 않았습니다. 모든 노드를 재귀 적으로 가로 지르며 인 노드를 추가하여 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

두 링크를 모두 보았습니다 (예, 게시하기 전에 Google을 했었습니다). 그러나 다른 XML 방법을 배우고 구현하고 싶지 않습니다. 위에서 보았 듯이 DOM 파서가 있는데 새로운 XML 파일로 조정하려고합니다. 하지만 어쨌든 tnx;) – Galip

+0

좋아! 내 응용 프로그램에서 SAXParser를 구현합니다 :) 희망이 쉽습니다 .. – Galip

+0

DOMParser로 구문 분석 할 수 있지만 무엇을 넣을 수 있습니까? 데이터를 저장하고 사용하기위한 컨테이너 객체가 있습니까? – Tarik