加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml 使用PULL解析器

发布时间:2020-12-15 22:54:35 所属栏目:百科 来源:网络整理
导读: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'
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();
    }  
}  
            

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读