2012-08-07 62 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,它是Android SDK的一部分here是一個很好的教程。

您還應該重點關注Default Handlerhere)。仔細看看這些方法:

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

endElement(String uri, String localName, String qName)

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

+0

感謝名單伴侶對你的幫助,我會看着你的你的鏈接 – 2012-08-07 07:38:01

+0

對不起,我不能投票×最大我沒有15式回購你看 – 2012-08-07 07:42:21

+0

如果你對答案滿意,你可以接受它。 – Michal 2012-08-07 07:44:01

0

我會建議你使用SimpleXml,這是非常快,易於安裝。

我用了超過3個應用和容易,因爲1.2.3

Here Enjoy...