xml 使用PULL解析器

import java.io.InputStream;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;


import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;


import android.util.Xml; 

/*

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<message from="192.168.10.110" to="192.168.10.112" 
direct="0" time="2014-04-12 15:20:10" xml:lang="en">
<data length="1000">json....data</data>
<thread>thread_id</thread>
</message>

*/

private void xml_pull_test()
{
  //xml-pull 生成:               
    XmlSerializer serializer = Xml.newSerializer(); //由android.util.Xml创建一个XmlSerializer实例  
    StringWriter writer = new StringWriter();              
    try {
                serializer.setOutput(writer); //设置输出方向为writer                  
        serializer.startDocument("UTF-8", true);  
        serializer.startTag("", "message");  
        serializer.attribute("", "from","192.168.10.110");
        serializer.attribute("", "to","192.168.10.112");
        serializer.attribute("", "direct","0"); // direct=0 server->client, 1=client->server, 2=client-client ,
        serializer.attribute("", "time","2014-04-12 15:20:10");
        serializer.attribute("", "app","xserver");//app
        serializer.attribute("", "xml:lang","en");
        serializer.startTag("", "data"); 
        serializer.attribute("", "length","1000"); 
        serializer.text("json....data");
        serializer.endTag("", "data"); 
        serializer.startTag("", "thread"); 
        serializer.text("thread_id");
        serializer.endTag("", "thread"); 
        serializer.endTag("", "message");
        serializer.endDocument();  
    } catch (IllegalArgumentException e) {
	// TODO Auto-generated catch block
	System.out.println("[result] Error1:"+e.getMessage());
    } catch (IllegalStateException e) {
	// TODO Auto-generated catch block
	System.out.println("[result] Error2:"+e.getMessage());
    } catch (IOException e) {
	// TODO Auto-generated catch block
	System.out.println("[result] Error3:"+e.getMessage());
    }  

    System.out.println(writer.toString()); 


//xml-pull 解析:

    String xmlString=writer.toString();
    XmlPullParser parser = Xml.newPullParser(); 
    ByteArrayInputStream is = new ByteArrayInputStream(xmlString.getBytes());//.getBytes("UTF-8")
    try {
        parser.setInput(is, "UTF-8"); //设置输入流 并指明编码方式 
      
        int eventType = parser.getEventType();  
        while (eventType != XmlPullParser.END_DOCUMENT) {  
            switch (eventType) {  
            case XmlPullParser.START_DOCUMENT: 
            break;  
            case XmlPullParser.START_TAG:  
            String tag=parser.getName();
            System.out.println("<"+tag+">");
            if (tag.equalsIgnoreCase("message")) {
                int na=parser.getAttributeCount();
                System.out.println("na="+na);
                for (int i=0;i<na;i++){
                    String name=parser.getAttributeName(i);
                    String value=parser.getAttributeValue(i);
                    String type=parser.getAttributeType(i);
                    System.out.println("["+i+"]:"+name+","+value+","+type);
                }
                
                //Integer.parseInt(parser.getAttributeValue(ns, "id")));
            } else if (tag.equalsIgnoreCase("data")) {  
                eventType = parser.next();  
                String str=parser.getText();
                System.out.println(str);                            
            } else if (tag.equalsIgnoreCase("thread")) {  
                eventType = parser.next();  
                String str=parser.getText();//Integer.parseInt(parser.getText())
                System.out.println(str); 
            } 
            break;  
            case XmlPullParser.END_TAG:  
            String tagE=parser.getName();
            System.out.println("</"+tagE+">");
            if (tagE.equalsIgnoreCase("message")) {  
            }  
            break;  
            }  
           
                    eventType = parser.next();
            
        }  
    } catch (IllegalArgumentException e) {
	// TODO Auto-generated catch block
	System.out.println("[result] Error1:"+e.getMessage());
    } catch (IllegalStateException e) {
	// TODO Auto-generated catch block
	System.out.println("[result] Error2:"+e.getMessage());
    } catch (IOException e) {
	// TODO Auto-generated catch block
	System.out.println("[result] Error3:"+e.getMessage());
    } catch (XmlPullParserException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
    }  
}  
            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值