• Android之pull解析方式


    在Android中,常见的XML解析器分别为SAX解析器、DOM解析器和PULL解析器,其中PULL解析器小巧轻便,解析速度快,简单易用,非常适合在Android移动设备中使用,Android系统内部在解析各种XML时也是用PULL解析器,今天我来介绍一下PULL解析器

    package com.hb.xml;
    
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    import org.xmlpull.v1.XmlPullParser;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.util.Xml;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
        protected static final int NUMBER = 0;
        protected static final int LOCATION = 1;
        protected static final int PHONEJX = 2;
        protected static final int NO = 3;
        private Button bt_start;
        private TextView tv_desc;
        private TextView tv_number;
        private TextView tv_for;
        private String path;
        private XmlPullParser xml;
        private Handler handler=new Handler(){
            public void handleMessage(android.os.Message msg) {
                switch (msg.what) {
                case NUMBER:
                    tv_number.setText((String)msg.obj);
                    Toast.makeText(MainActivity.this, "测试成功", 0).show();
                    break;
                case LOCATION:
                    tv_for.setText((String)msg.obj);
                    Toast.makeText(MainActivity.this, "测试成功", 0).show();
                    break;
                case PHONEJX:
                    tv_desc.setText((String)msg.obj);
                    Toast.makeText(MainActivity.this, "测试成功", 0).show();
                    break;
                case NO:
                    Toast.makeText(MainActivity.this, "测试失败", 0).show();
                    break;
                }
            };
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
        }
    
        private void initView() {
            bt_start=(Button) findViewById(R.id.bt_start);
            tv_desc=(TextView) findViewById(R.id.tv_desc);
            tv_number=(TextView) findViewById(R.id.tv_number);
            tv_for=(TextView) findViewById(R.id.tv_for);
        }
        public void testtesting(View v){
            new Thread(){
    
                public void run() {
                    try {
                        URL url = new URL("http://192.168.1.104:8080/test.xml");
                        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                        conn.setConnectTimeout(3000);
                        conn.setRequestMethod("GET");
                        int code = conn.getResponseCode();
                        if(code==200){
    
                            InputStream is = conn.getInputStream();
                            xml = Xml.newPullParser();
                            xml.setInput(is, "gbk");
                            int type = xml.getEventType();
                            while (type!=XmlPullParser.END_DOCUMENT) {
                                if(type == XmlPullParser.START_TAG){
                                    if("phonenum".equals(xml.getName())){
                                        String phonenum=xml.nextText();
                                        Message msg= new Message();
                                        msg.what=NUMBER;
                                        msg.obj=phonenum;
                                        handler.sendMessage(msg);
                                    }else if("location".equals(xml.getName())){
                                        String location=xml.nextText();
                                        Message msg= new Message();
                                        msg.what=LOCATION;
                                        msg.obj=location;
                                        handler.sendMessage(msg);
                                    }else if("phoneJx".equals(xml.getName())){
                                        String desc=xml.nextText();
                                        Message msg= new Message();
                                        msg.what=PHONEJX;
                                        msg.obj=desc;
                                        handler.sendMessage(msg);
                                    }
                                }else{
                                    //测试失败
                                }
                                type=xml.next();
                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        Message msg= new Message();
                        msg.what=NO;
                        handler.sendMessage(msg);
                    }
                };
            }.start();
        }
    }
  • 相关阅读:
    Linux驱动入门(三)Led驱动
    Linux驱动入门(二)操作硬件
    mysql表的完整性约束
    数据库操作
    初识数据库
    mysql的安装、启动和基础配置 —— windows版本
    Socket网络编程
    python进阶之多线程(简单介绍协程)
    python进阶多进程(进程池,进程间通信)
    python基础之异常处理
  • 原文地址:https://www.cnblogs.com/ltw222/p/14911827.html
Copyright © 2020-2023  润新知