xmlPull 解析xml实例

    

package com.stz;

import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

import android.app.Activity;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.widget.TextView;

public class XmlPullActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        String str="";
        String xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                "<people> "+
                "<person personid=\"e01\" enable=\"true\"> "+
                "<name>张三</name> "+
                "<tel>5128</tel> "+
                "<email>txq512@sina.com</email> "+
                "</person> "+
                "<person personid=\"e02\" enable=\"false\"> "+
                "<name>meixin</name> "+
                "<tel>5252525</tel> "+
                "<email>wnight88@sina.com</email> "+
                "</person> "+
                "<person personid=\"e03\" enable=\"true\"> "+
                "<name>yu</name> "+
                "<tel>5389654</tel> "+
                "<email>yu@188.net</email> "+
                "</person> "+
                "</people> ";
        
        ByteArrayInputStream stream = new ByteArrayInputStream(xml.getBytes());
        try {
            File file=new File("F:/text.xml");
            //FileInputStream filinput=new FileInputStream(file);
            //FileReader fileRe=new FileReader(file);
            XmlPullParserFactory pullFactory=XmlPullParserFactory.newInstance();
            XmlPullParser pullParser=pullFactory.newPullParser();
            pullParser.setInput(stream,null);
            int entype=pullParser.getEventType();
            
            while (entype!=XmlPullParser.END_DOCUMENT) {
                
                switch(entype){
                    case XmlPullParser.START_DOCUMENT:
                        str+="开始读xml文档";
                         break;
                    case XmlPullParser.START_TAG:
                          str+="\n"+pullParser.getName();
                          for(int i=0;i<pullParser.getAttributeCount();i++){  
                               str+= pullParser.getAttributeName(i) + "--" + pullParser.getAttributeValue(i);  
                            }
                         break;
                    case XmlPullParser.END_TAG:
                         str+="\n"+pullParser.getName();
                         break;
                    case XmlPullParser.TEXT:  
                         str+="\n"+pullParser.getText();
                         break; 
                    case XmlPullParser.END_DOCUMENT:
                        str+="读完xml文档";
                         break;
                }
                entype=pullParser.next();
            }
            TextView txt=(TextView)findViewById(R.id.txt);
            txt.setMovementMethod(ScrollingMovementMethod.getInstance());  
            txt.setText(str);
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        
    }
}

xmlPull 和Sax 解析xml的区别:
PULL方式比较简单,而且可以根据判断停止解析(DOM和SAX都需要对文件的文章解析中途不能停止)。

 

一、DOM方式解析:

xml是先把xml文档都读到内存中,然后再用DOM API来访问树形结构,并获取数据。这个写起来很简单,但是很消耗内存。要是数据过大,手机不够牛逼,可能手机直接死机。

常用的DoM接口和类:

Document:该接口定义分析并创建DOM文档的一系列方法,它是文档树的根,是操作DOM的基础。 Element:该接口继承Node接口,提供了获取、修改XML元素名字和属性的方法。 Node:该接口提供处理并获取节点和子节点值的方法。 NodeList:提供获得节点个数和当前节点的方法。这样就可以迭代地访问各个节点。 DOMParser:该类是Apache的Xerces中的DOM解析器类,可直接解析XML文件。

二、SAX解析技术:

SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。

常用的接口和类:

Attrbutes:用于得到属性的个数、名字和值。 DefaultHandler:它提供了这些接LI的缺省实现。在大多数情况下,为应用程序扩展DefaultHandler并覆盖相关的方法

三、XMLPull

XML pull提供了开始元素和结束元素。当某个元素开始时,我们可以调用parser.nextText0从XML文档中提取所有字符数据。当解释到一个文档结束时,自动生成EndDocument 事件。

常用的接口和类:

XmlPullParser:XML pull解析器是一个在XMLPULL VlAP1中提供了定义解析功能的接口。 XmlSerializer:它是一个接口,定义了XML信息集的序列。 XmlPullParserFactory:这个类用于在XMPULL V1 API中创建XML Pull解析器。

 

 

 

posted @ 2012-05-27 00:41  淡泊名利  阅读(1091)  评论(0)    收藏  举报