2012-08-07 3 views
1

하이 메이트는 내가 내가 내가 속성이 내가 수행 한 숙제 가치를 얻을 수 있도록이 XML을 구문 분석 할 내 XML은XML 파싱이

<CallLists> <CallList ID="1" Name="Name1" Desc="Ignore" CreatedOn="2/15/2011 1:48:30 PM" CreatedBy="def"> <CallList ID="2" Name="Name2" Desc="Agree" CreatedOn="3/8/2011 5:18:52 PM" CreatedBy="abc" > </CallLists> 

입니다 속성의 XML 파싱 작업입니다 것은

입니다

비누 //보기 XML을 사용하여 서버에서 응답을 가져오고

viewXML(Responsedata.toString()); 



public void viewXML(String xmlStr) throws IOException { 
    try{ 
     byte[] xmlByteArray=xmlStr.getBytes(); 
     ByteArrayInputStream xmlStream=new ByteArrayInputStream(xmlByteArray); 
     InputStreamReader xmlReader=new InputStreamReader(xmlStream); 
     XmlParser parser=new XmlParser(xmlReader); 
     try{ 
      traverse(parser,""); 
     } 
     catch(Exception exc){ 
      exc.printStackTrace(); 
     } 
     return; 
    } 
    catch(IOException e){ 
     return; 
    } 
} 



    public void traverse(XmlParser parser,String indent) throws Exception{ 
    boolean leave=false; 
    String sValue=""; 
    do{ 
     ParseEvent event=parser.read(); 
     ParseEvent pe; 
     switch(event.getType()){ 
      case Xml.START_TAG: 
       if (event.equals("calllists")){ 

       } 
       if("ID".equals(event.getAttribute(0))){ 
        pe=parser.read(); 
        sValue=pe.getText()+"~~"; 

      } 
       if("Name".equals(event.getAttribute(1))){ 
        pe=parser.read(); 
        sValue=sValue+pe.getText()+"~~"; 
       } 

       if("Desc".equals(event.getAttributes())){ 
        pe=parser.read(); 
        sValue=sValue+pe.getText()+"~~"; 
       } 

       if("CreatedOn".equals(event.getAttributes())){ 
        pe=parser.read(); 
        sValue=sValue+pe.getText()+"~~"; 
       } 


       if("CreatedBy".equals(event.getName())){ 
        pe=parser.read(); 
        sValue=sValue+pe.getText()+"~~"; 
       } 
       traverse(parser,""); 
       break; 
      case Xml.END_TAG: 
       leave=true; 
       break; 
      case Xml.END_DOCUMENT: 
       leave=true; 
       break; 
      case Xml.TEXT: 
       break; 
      case Xml.WHITESPACE: 
       break; 
      default: 
     } 
    }while(!leave); 
} 

답변

1

을 통과 한 후에 당신은 복잡한 물건의 방법을 만들고있다.

대신 SAX을 사용하십시오. 안드로이드 SDK here의 일부입니다. 좋은 설명서입니다.

또한 Default Handler (here)에 초점을 맞추어야합니다. 이러한 방법에 대해 자세히 살펴 :

startElement(String uri, String localName, String qName, Attributes attributes)

endElement(String uri, String localName, String qName)

characters(char[] ch, int start, int length)

+0

1.2.3으로 고맙습니다 메이트 –

+0

죄송합니다 제가 15 REPO을 해달라고 U를 투표 할 수 있습니다 u를 –

+0

으로 보아라. 당신이 대답에 만족한다면, 당신은 그것을 받아 들일 수있다. – Michal

0

나는 당신이 SimpleXml를 사용하는 것이 좋습니다 것, 그것은 매우 빠르고 쉽게 설치할 수 있습니다.

나는 3 개 이상의 애플리케이션을 사용하고 내가 당신의 당신의 연결로 볼 것이다 당신의 도움을 쉽게

Here Enjoy...