AndroidXml解析的三种方式list的转换

前端之家收集整理的这篇文章主要介绍了AndroidXml解析的三种方式list的转换前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

后台获取数据为XMl格式,就找了很多资料学习了下,
参考链接 参考链接
感谢博主:CodeYourSister!

安卓解析XMl主要通过三种方式: DOM, SAX,PULL;三种方式
其中大文件解析最好不要用 :DOM解析(文件树放在内存中,太占内存,不推荐)
SAX和Pull是基于事件驱动的;其中SAX解析方式是边下载边解析占用内存较少

下面上代码:activity中代码

package@H_404_13@ com.btzh.myxmltest;

import@H_404_13@ android.app.ProgressDialog;
import@H_404_13@ android.os.AsyncTask;
import@H_404_13@ android.support.v7.app.AppCompatActivity;
import@H_404_13@ android.os.Bundle;
import@H_404_13@ android.util.Log;
import@H_404_13@ android.view.View;
import@H_404_13@ android.widget.TextView;
import@H_404_13@ android.widget.Toast;

import@H_404_13@ org.w3c.dom.Attr;
import@H_404_13@ org.w3c.dom.Comment;
import@H_404_13@ org.w3c.dom.Document;
import@H_404_13@ org.w3c.dom.Element;
import@H_404_13@ org.w3c.dom.NamedNodeMap;
import@H_404_13@ org.w3c.dom.Node;
import@H_404_13@ org.w3c.dom.NodeList;
import@H_404_13@ org.xml.sax.Attributes;
import@H_404_13@ org.xml.sax.SAXException;
import@H_404_13@ org.xml.sax.helpers.DefaultHandler;
import@H_404_13@ org.xmlpull.v1.XmlPullParser;
import@H_404_13@ org.xmlpull.v1.XmlPullParserException;
import@H_404_13@ org.xmlpull.v1.XmlPullParserFactory;

import@H_404_13@ java.io.BufferedReader;
import@H_404_13@ java.io.ByteArrayInputStream;
import@H_404_13@ java.io.IOException;
import@H_404_13@ java.io.InputStream;
import@H_404_13@ java.io.InputStreamReader;
import@H_404_13@ java.net.HttpURLConnection;
import@H_404_13@ java.net.MalformedURLException;
import@H_404_13@ java.net.URL;
import@H_404_13@ java.util.ArrayList;
import@H_404_13@ java.util.HashMap;
import@H_404_13@ java.util.List;

import@H_404_13@ javax.xml.parsers.DocumentBuilder;
import@H_404_13@ javax.xml.parsers.DocumentBuilderFactory;
import@H_404_13@ javax.xml.parsers.ParserConfigurationException;
import@H_404_13@ javax.xml.parsers.SAXParser;
import@H_404_13@ javax.xml.parsers.SAXParserFactory;

public@H_404_13@ class@H_404_13@ MainActivity@H_404_13@ extends@H_404_13@ AppCompatActivity@H_404_13@ implements@H_404_13@ View@H_404_13@.OnClickListener@H_404_13@ {@H_404_13@
    private@H_404_13@ TextView textView;
    private@H_404_13@ String httpStr = "http://10.27.7.162:8080/frame/lemeeting/getinforoom"@H_404_13@;
    private@H_404_13@ String httpStrtest = "https://mail.qq.com/cgi-bin/readmail?sid=344d6HuF5sEcSiJ6&mailid=ZC3331-E0L~tCfZQmW4DWU9gT9aT73&nocheckframe=true&t=attachpreviewer&select=1&selectfile=&seq="@H_404_13@;
    ProgressDialog progressDialog;
    String Strhttp = "\n"@H_404_13@ +
            "<lemeeting> <user>user9</user> "@H_404_13@ +
            "<conf_room> <conf_id>329</conf_id> <conf_name>?????</conf_name> "@H_404_13@ +
            " <start_time>2017-03-31 09:48:12</start_time> "@H_404_13@ +
            " <end_time>2017-04-01 09:48:12</end_time> "@H_404_13@ +
            "<conf_password>202cb962ac59075b964b07152d234b70</conf_password> "@H_404_13@ +
            " <group_id>1</group_id> "@H_404_13@ +
            " <world_id>600122</world_id> </conf_room></lemeeting>"@H_404_13@;
    @Override@H_404_13@
    protected@H_404_13@ void@H_404_13@ onCreate@H_404_13@(Bundle savedInstanceState) {
        super@H_404_13@.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView)findViewById(R.id.spyq_text);
        findViewById(R.id.spyq_list_btn).setOnClickListener(this@H_404_13@);
        findViewById(R.id.spyq_DOM_btn).setOnClickListener(this@H_404_13@);
        findViewById(R.id.spyq_SAX_btn).setOnClickListener(this@H_404_13@);
        findViewById(R.id.spyq_Pull_btn).setOnClickListener(this@H_404_13@);
        progressDialog = new@H_404_13@ ProgressDialog(this@H_404_13@);
    }

    private@H_404_13@ void@H_404_13@ showProgressDialog@H_404_13@(){
        if@H_404_13@ (null@H_404_13@!=progressDialog){
            progressDialog.show();
        }
    }
    private@H_404_13@ void@H_404_13@ DismissProgressDialog@H_404_13@(){
        if@H_404_13@ (null@H_404_13@!=progressDialog){
            progressDialog.dismiss();
        }
    }
    //开启异步线程@H_404_13@
    class Get_Result extends AsyncTask<String,Integer,String> {
        @Override@H_404_13@
        protected@H_404_13@ void@H_404_13@ onPreExecute@H_404_13@() {
            super@H_404_13@.onPreExecute();
            /* 设置进度条风格,风格为圆形,旋转的 */@H_404_13@
            progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            /* 设置ProgressDialog 标题 */@H_404_13@
            progressDialog.setTitle("提示"@H_404_13@);
            /* 设置ProgressDialog 提示信息 */@H_404_13@
            progressDialog.setMessage("请稍后..."@H_404_13@);
            /* 设置ProgressDialog 的进度条是否不明确 */@H_404_13@
            progressDialog.setIndeterminate(false@H_404_13@);
            /* 设置ProgressDialog 是否可以按退回按键取消 */@H_404_13@
            progressDialog.setCancelable(true@H_404_13@);
            showProgressDialog();
        }

        @Override@H_404_13@
        protected@H_404_13@ String doInBackground@H_404_13@(String... params) {
            String getresult = http_get(httpStr);
            return@H_404_13@ getresult;
        }

        @Override@H_404_13@
        protected@H_404_13@ void@H_404_13@ onPostExecute@H_404_13@(String s) {
            super@H_404_13@.onPostExecute(s);
            DismissProgressDialog();
            //对异步获取的到Xml格式的数据进行解析@H_404_13@
            saxParse(s);
        }
    }

    private@H_404_13@ void@H_404_13@ saxXmlParse@H_404_13@(String XmlStr) {
        InputStream inputStream = null@H_404_13@;
        try@H_404_13@ {
            inputStream = getResources().getAssets().open(XmlStr);
        } catch@H_404_13@ (IOException e) {
            e.printStackTrace();
        }
        if@H_404_13@(inputStream == null@H_404_13@)
            return@H_404_13@;

        final@H_404_13@ StringBuffer stringBuffer = new@H_404_13@ StringBuffer();
        SAXParserFactory factory = SAXParserFactory.newInstance();
        try@H_404_13@ {
            SAXParser saxParser = factory.newSAXParser();
            DefaultHandler defaultHandler = new@H_404_13@ DefaultHandler(){
                //开始解析文档,即开始解析XML根元素时调用方法@H_404_13@
                @Override@H_404_13@
                public@H_404_13@ void@H_404_13@ startDocument@H_404_13@() throws@H_404_13@ SAXException {
                    Log.d("zyr"@H_404_13@,"startDocument"@H_404_13@);
                    super@H_404_13@.startDocument();
                }
                //开始解析每个元素时都会调用方法@H_404_13@
                @Override@H_404_13@
                public@H_404_13@ void@H_404_13@ startElement@H_404_13@(String uri,String localName,String qName,Attributes attributes) throws@H_404_13@ SAXException {
                    Log.e("zyr"@H_404_13@,"startElement "@H_404_13@ + qName);
                    super@H_404_13@.startElement(uri,localName,qName,attributes);
                    stringBuffer.append("<"@H_404_13@ + qName);
                    if@H_404_13@(attributes!=null@H_404_13@){
                        for@H_404_13@(int@H_404_13@ i=0@H_404_13@;i<attributes.getLength();i++){
                            stringBuffer.append(" "@H_404_13@ + attributes.getQName(i) + "="@H_404_13@ + attributes.getValue(i));
                        }
                    }
                    stringBuffer.append(">"@H_404_13@);
                }
                //解析到每个元素的内容时会调用方法@H_404_13@
                @Override@H_404_13@
                public@H_404_13@ void@H_404_13@ characters@H_404_13@(char@H_404_13@[] ch,int@H_404_13@ start,int@H_404_13@ length) throws@H_404_13@ SAXException {
                    Log.d("zyr"@H_404_13@,"characters "@H_404_13@ + new@H_404_13@ String(ch,start,start+length));
                    super@H_404_13@.characters(ch,length);
                    stringBuffer.append(new@H_404_13@ String(ch,start+length));
                }
                //每个元素结束的时候都会调用方法@H_404_13@

                @Override@H_404_13@
                public@H_404_13@ void@H_404_13@ endElement@H_404_13@(String uri,String qName) throws@H_404_13@ SAXException {
                    Log.e("zyr"@H_404_13@,"endElement "@H_404_13@ + qName);
                    super@H_404_13@.endElement(uri,qName);
                    stringBuffer.append("</"@H_404_13@ + qName + ">"@H_404_13@);
                }
                //结束解析文档,即解析根元素结束标签调用方法@H_404_13@
                @Override@H_404_13@
                public@H_404_13@ void@H_404_13@ endDocument@H_404_13@() throws@H_404_13@ SAXException {
                    Log.d("zyr"@H_404_13@,"endDocument"@H_404_13@);
                    super@H_404_13@.endDocument();
                    runOnUiThread(new@H_404_13@ Runnable() {
                        @Override@H_404_13@
                        public@H_404_13@ void@H_404_13@ run@H_404_13@() {
                            textView.setText(""@H_404_13@);
                            textView.setText(stringBuffer.toString());
                        }
                    });
                }
            };
            saxParser.parse(inputStream,defaultHandler);

        } catch@H_404_13@ (ParserConfigurationException e) {
            e.printStackTrace();
        } catch@H_404_13@ (SAXException e) {
            e.printStackTrace();
        } catch@H_404_13@ (IOException e) {
            e.printStackTrace();
        }
    }

/*********************************SAX解析xml——start**********************************************/@H_404_13@
    private@H_404_13@ String get_qName = ""@H_404_13@;
    private@H_404_13@ String get_value = ""@H_404_13@;
    String value = ""@H_404_13@;
    private@H_404_13@ void@H_404_13@ saxParse@H_404_13@(String xmlStr) {
        if@H_404_13@ (xmlStr==null@H_404_13@||""@H_404_13@.equals(xmlStr))
            return@H_404_13@;
        final@H_404_13@ List<HashMap<String,String>> dataLV = new@H_404_13@ ArrayList<HashMap<String,String>>();
        final@H_404_13@ HashMap<String,String> tem = new@H_404_13@ HashMap<String,String>();
        InputStream inputStream = new@H_404_13@ ByteArrayInputStream(xmlStr.getBytes());
        if@H_404_13@(inputStream == null@H_404_13@)
            return@H_404_13@;
        SAXParserFactory factory = SAXParserFactory.newInstance();
        try@H_404_13@ {
            SAXParser saxParser = factory.newSAXParser();
            DefaultHandler defaultHandler = new@H_404_13@ DefaultHandler(){
                //开始解析文档,即开始解析XML根元素时调用方法@H_404_13@
                @Override@H_404_13@
                public@H_404_13@ void@H_404_13@ startDocument@H_404_13@() throws@H_404_13@ SAXException {
                    Log.d("zyr"@H_404_13@,Attributes attributes) throws@H_404_13@ SAXException {
                    super@H_404_13@.startElement(uri,attributes);
                }
                //解析到每个元素的内容时会调用方法@H_404_13@
                @Override@H_404_13@
                public@H_404_13@ void@H_404_13@ characters@H_404_13@(char@H_404_13@[] ch,int@H_404_13@ length) throws@H_404_13@ SAXException {
                    super@H_404_13@.characters(ch,length);
                    value =  new@H_404_13@ String(ch,start+length);
                }
                //每个元素结束的时候都会调用方法@H_404_13@
                @Override@H_404_13@
                public@H_404_13@ void@H_404_13@ endElement@H_404_13@(String uri,String qName) throws@H_404_13@ SAXException {
                    super@H_404_13@.endElement(uri,qName);
                    get_qName = Return_qName(qName);
                    get_value = Return_qName(value);
                    if@H_404_13@ (null@H_404_13@ == get_value ||""@H_404_13@.equals(get_value)||get_value.isEmpty()||get_value.length()<=0@H_404_13@){

                    }else@H_404_13@ {
                        tem.put(get_qName,get_value);
                    }
                }
                //结束解析文档,即解析根元素结束标签调用方法@H_404_13@
                @Override@H_404_13@
                public@H_404_13@ void@H_404_13@ endDocument@H_404_13@() throws@H_404_13@ SAXException {
                    Log.d("zyr"@H_404_13@,"endDocument"@H_404_13@);
                    super@H_404_13@.endDocument();
                    runOnUiThread(new@H_404_13@ Runnable() {
                        @Override@H_404_13@
                        public@H_404_13@ void@H_404_13@ run@H_404_13@() {
                            tem.put(get_qName,get_value);
                            dataLV.add(tem);
                            getRoom_values(dataLV);
                            System.out.println("----datalv"@H_404_13@+dataLV);
                            textView.setText(""@H_404_13@);
                            for@H_404_13@ (int@H_404_13@ j = 0@H_404_13@;j<dataLV.size();++j){
                                HashMap map = dataLV.get(j);
                                textView.setText("conf_id="@H_404_13@+
                                        map.get("conf_id"@H_404_13@).toString()+"\n"@H_404_13@+"conf_name="@H_404_13@+map.get("conf_name"@H_404_13@).toString()+
                                        "\n"@H_404_13@+"start_time="@H_404_13@+map.get("start_time"@H_404_13@).toString()+"\n"@H_404_13@+"end_time="@H_404_13@+map.get("end_time"@H_404_13@).toString()+
                                        "\n"@H_404_13@+"conf_password="@H_404_13@+map.get("conf_password"@H_404_13@).toString()+"\n"@H_404_13@+"group_id="@H_404_13@+map.get("group_id"@H_404_13@).toString()+
                                        "\n"@H_404_13@+"world_id="@H_404_13@+map.get("world_id"@H_404_13@).toString());
                            }

                        }
                    });
                }
            };
            saxParser.parse(inputStream,defaultHandler);
        } catch@H_404_13@ (ParserConfigurationException e) {
            e.printStackTrace();
        } catch@H_404_13@ (SAXException e) {
            e.printStackTrace();
        } catch@H_404_13@ (IOException e) {
            e.printStackTrace();
        }
    }
    //返回标签内容@H_404_13@
    private@H_404_13@ String Return_qName@H_404_13@(String qName){
// String Error = "error";@H_404_13@
        if@H_404_13@ (qName!=null@H_404_13@&&!""@H_404_13@.equals(qName)){
            return@H_404_13@ qName;
        }else@H_404_13@ {
            return@H_404_13@ qName;
        }
    }

    private@H_404_13@ void@H_404_13@ getRoom_values@H_404_13@(List<HashMap<String,String>> list){
        int@H_404_13@ getRoomId = -10@H_404_13@;  //房间ID@H_404_13@
        String getConfTime = ""@H_404_13@; //接收邀请时间@H_404_13@
        String getConfCode = ""@H_404_13@; //会议室验证码@H_404_13@
        String inviter  = ""@H_404_13@; //邀请人@H_404_13@
        String RoomName = ""@H_404_13@; //房间主题名称@H_404_13@
        int@H_404_13@ Mes_type = -11@H_404_13@; //消息类型@H_404_13@
        String result = ""@H_404_13@;//返回值类型@H_404_13@
        String world_id = ""@H_404_13@;
        for@H_404_13@ (int@H_404_13@ i = 0@H_404_13@;i<list.size();++i){
            HashMap map = list.get(i);
// result = map.get("result").toString();@H_404_13@
            world_id = map.get("world_id"@H_404_13@).toString();
// if ("99".equals(result)){@H_404_13@
// show_Toast("无人接听!");@H_404_13@
// }else if ("1".equals(result)){@H_404_13@
// show_Toast("没有人员在线!");@H_404_13@
// }else if ("2".equals(result)){@H_404_13@
// show_Toast("没有空闲人员!");@H_404_13@
// }else if ("0".equals(result)){@H_404_13@
// getRoomId = Integer.parseInt(map.get("conf_id").toString());@H_404_13@
// getConfTime = map.get("start_time").toString();@H_404_13@
// getConfCode = map.get("").toString();/**????????????**/@H_404_13@
// inviter = map.get("user").toString();@H_404_13@
// RoomName = map.get("conf_name").toString();@H_404_13@
// Mes_type = Integer.parseInt(map.get("").toString()); /**????????????**/@H_404_13@
// showDialog(getRoomId,getConfTime,getConfCode,inviter,RoomName,Mes_type);@H_404_13@
// }else@H_404_13@
            if@H_404_13@ ("600122"@H_404_13@.equals(world_id)){
// showDialog(getRoomId,Mes_type);@H_404_13@

            }else@H_404_13@ {
                show_Toast("未知错误!"@H_404_13@);
            }
        }
    }
    //吐司显示@H_404_13@
    private@H_404_13@ void@H_404_13@ show_Toast@H_404_13@(String message){
        Toast.makeText(getApplicationContext(),message,Toast.LENGTH_SHORT).show();
    }

/***********************************SAX解析XMl——end***************************************/@H_404_13@
/************************************DOM解析Xml——start************************************/@H_404_13@
    /** * 使用递归解析一个XML文档 * */@H_404_13@
    private@H_404_13@ void@H_404_13@ domParse@H_404_13@(String domXml) {
        InputStream inputStream = null@H_404_13@;
        try@H_404_13@ {
            inputStream = getResources().getAssets().open(domXml);
        } catch@H_404_13@ (IOException e) {
            e.printStackTrace();
        }
        if@H_404_13@(inputStream == null@H_404_13@)
            return@H_404_13@;
        StringBuffer stringBuffer = new@H_404_13@ StringBuffer();
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try@H_404_13@ {
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(inputStream);
            Element rootElement = document.getDocumentElement();//users@H_404_13@
            stringBuffer.append(parseElement(rootElement));
            textView.setText(""@H_404_13@);
            textView.setText(stringBuffer.toString());
        } catch@H_404_13@ (ParserConfigurationException e) {
            e.printStackTrace();
        } catch@H_404_13@ (SAXException e) {
            e.printStackTrace();
        } catch@H_404_13@ (IOException e) {
            e.printStackTrace();
        }
    }
    private@H_404_13@ String parseElement@H_404_13@(Element element) {
        StringBuffer stringBuffer = new@H_404_13@ StringBuffer();
        String tagName = element.getNodeName();
        stringBuffer.append("<"@H_404_13@ + tagName);
        // element元素的所有属性构成的NamedNodeMap对象,需要对其进行判断@H_404_13@
        NamedNodeMap attributeMap = element.getAttributes();
        // 如果存在属性,则打印属性@H_404_13@
        if@H_404_13@ (null@H_404_13@ != attributeMap) {
            for@H_404_13@ (int@H_404_13@ i = 0@H_404_13@; i < attributeMap.getLength(); i++) {
                // 获得该元素的每一个属性@H_404_13@
                Attr attr = (Attr) attributeMap.item(i);
                // 属性名和属性值@H_404_13@
                String attrName = attr.getName();
                String attrValue = attr.getValue();
                // 注意属性值需要加上引号,所以需要\转义@H_404_13@
                stringBuffer.append(" "@H_404_13@ + attrName + "=\""@H_404_13@ + attrValue + "\""@H_404_13@);
            }
        }
        // 关闭标签名@H_404_13@
        stringBuffer.append(">"@H_404_13@);
        // 至此已经打印出了元素名和其属性@H_404_13@
        // 下面开始考虑它的子元素@H_404_13@
        NodeList children = element.getChildNodes();
        for@H_404_13@ (int@H_404_13@ i = 0@H_404_13@; i < children.getLength(); i++) {
            // 获取每一个child@H_404_13@
            Node node = children.item(i);
            // 获取节点类型@H_404_13@
            short@H_404_13@ nodeType = node.getNodeType();
            if@H_404_13@ (nodeType == Node.ELEMENT_NODE) {
                // 如果是元素类型,则递归输出@H_404_13@
                stringBuffer.append(parseElement((Element) node));
            } else@H_404_13@ if@H_404_13@ (nodeType == Node.TEXT_NODE) {
                // 如果是文本类型,则输出节点值,及文本内容@H_404_13@
                stringBuffer.append(node.getNodeValue());
            } else@H_404_13@ if@H_404_13@ (nodeType == Node.COMMENT_NODE) {
                // 如果是注释,则输出注释@H_404_13@
                stringBuffer.append("<!--"@H_404_13@);
                Comment comment = (Comment) node;
                // 注释内容@H_404_13@
                String data = comment.getData();
                stringBuffer.append(data);
                stringBuffer.append("-->"@H_404_13@);
            }
        }
        // 所有内容处理完之后,输出关闭根节点@H_404_13@
        stringBuffer.append("</"@H_404_13@ + tagName + ">"@H_404_13@);
        return@H_404_13@ stringBuffer.toString();
    }
    /*********************************DOM解析Xml——end****************************/@H_404_13@
    /*********************************pull解析xml——start*************************/@H_404_13@
    private@H_404_13@ void@H_404_13@ pullParse@H_404_13@(String pullxml) {
        InputStream inputStream = null@H_404_13@;
        try@H_404_13@ {
            inputStream = getResources().getAssets().open(pullxml);
        } catch@H_404_13@ (IOException e) {
            e.printStackTrace();
        }
        if@H_404_13@(inputStream == null@H_404_13@)
            return@H_404_13@;

        StringBuffer stringBuffer = new@H_404_13@ StringBuffer();
        try@H_404_13@ {
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            XmlPullParser xmlPullParser = factory.newPullParser();
            xmlPullParser.setInput(inputStream,"UTF-8"@H_404_13@);
            int@H_404_13@ eventType = xmlPullParser.getEventType();
            while@H_404_13@ (eventType!= XmlPullParser.END_DOCUMENT){
                switch@H_404_13@ (eventType){
                    case@H_404_13@ XmlPullParser.START_DOCUMENT:
                        break@H_404_13@;
                    case@H_404_13@ XmlPullParser.START_TAG:
                        stringBuffer.append("<"@H_404_13@ + xmlPullParser.getName());
                        for@H_404_13@(int@H_404_13@ i=0@H_404_13@;i<xmlPullParser.getAttributeCount();i++){
                            stringBuffer.append(" "@H_404_13@ + xmlPullParser.getAttributeName(i) + "="@H_404_13@ + xmlPullParser.getAttributeValue(i));
                        }
                        stringBuffer.append(">"@H_404_13@);
                        break@H_404_13@;
                    case@H_404_13@ XmlPullParser.TEXT:
                        stringBuffer.append(xmlPullParser.getText());
                        break@H_404_13@;
                    case@H_404_13@ XmlPullParser.END_TAG:
                        stringBuffer.append("</"@H_404_13@ + xmlPullParser.getName() + ">"@H_404_13@);
                        break@H_404_13@;
                    case@H_404_13@ XmlPullParser.END_DOCUMENT:
                        break@H_404_13@;
                }
                eventType = xmlPullParser.next();
            }
            textView.setText(""@H_404_13@);
            textView.append(stringBuffer.toString());
        } catch@H_404_13@ (XmlPullParserException e) {
            e.printStackTrace();
        } catch@H_404_13@ (IOException e) {
            e.printStackTrace();
        }
    }
    /*********************************pull解析xml——end*************************/@H_404_13@
    //http的get方法获取后台数据@H_404_13@
    private@H_404_13@ String http_get@H_404_13@(String http_Url){
        String result = null@H_404_13@;
        BufferedReader reader = null@H_404_13@;
        HttpURLConnection connection = null@H_404_13@;
            try@H_404_13@ {
                URL url = new@H_404_13@ URL(http_Url);
                connection = (HttpURLConnection)url.openConnection();
                connection.setRequestMethod("GET"@H_404_13@);
                connection.setConnectTimeout(6@H_404_13@*1000@H_404_13@);
                connection.setUseCaches(false@H_404_13@);
                connection.setReadTimeout(6@H_404_13@*1000@H_404_13@);
                connection.connect();
                if@H_404_13@ (HttpURLConnection.HTTP_OK==connection.getResponseCode()){
                    InputStream inputStream  = connection.getInputStream();
                    reader = new@H_404_13@ BufferedReader(new@H_404_13@ InputStreamReader(inputStream,"utf-8"@H_404_13@));
                    StringBuilder builder = new@H_404_13@ StringBuilder();
                    String line = null@H_404_13@;
                    while@H_404_13@ ((line = reader.readLine()) != null@H_404_13@) {
                        builder.append(line).append("\n"@H_404_13@);
                    }
                    result = builder.toString();
                }
            } catch@H_404_13@ (IOException e) {
                e.printStackTrace();
            }finally@H_404_13@ {
                if@H_404_13@ (null@H_404_13@!=connection)
                    connection.disconnect();
                if@H_404_13@ (null@H_404_13@!=reader)
                    try@H_404_13@ {
                        reader.close();
                    } catch@H_404_13@ (IOException e) {
                        e.printStackTrace();
                    }
            }
       return@H_404_13@ result;
    }
    @Override@H_404_13@
    public@H_404_13@ void@H_404_13@ onClick@H_404_13@(View v) {
        switch@H_404_13@ (v.getId()){
            case@H_404_13@ R.id.spyq_SAX_btn:
                //SAX解析@H_404_13@
                saxXmlParse("MyTest.xml"@H_404_13@);
                break@H_404_13@;
            case@H_404_13@ R.id.spyq_DOM_btn:
                //dom解析@H_404_13@
                domParse("MyTestOne.xml"@H_404_13@);
                break@H_404_13@;
            case@H_404_13@ R.id.spyq_Pull_btn:
                //Pull解析@H_404_13@
                pullParse("Mypull.xml"@H_404_13@);
                break@H_404_13@;
            case@H_404_13@ R.id.spyq_list_btn:
                //SAX解析本地Xml文件转List@H_404_13@
// saxParse(Strhttp);@H_404_13@
                //解析服务器获取内容@H_404_13@
                new@H_404_13@ Get_Result().execute();
                break@H_404_13@;
            default@H_404_13@:
                break@H_404_13@;
        }
    }
}

所有的代码都在里面了,而且注释非常详细, 千万记得网络权限,测试时一直报错,无语了很长时间,原来权限没写,好气

<uses-permission@H_404_13@ android:name@H_404_13@="android.permission.INTERNET"@H_404_13@/>@H_404_13@

XML布局代码

<?xml version="1.0" encoding="utf-8"?>@H_404_13@
<LinearLayout@H_404_13@ xmlns:android@H_404_13@="http://schemas.android.com/apk/res/android"@H_404_13@ xmlns:tools@H_404_13@="http://schemas.android.com/tools"@H_404_13@ android:layout_width@H_404_13@="match_parent"@H_404_13@ android:layout_height@H_404_13@="match_parent"@H_404_13@ android:orientation@H_404_13@="vertical"@H_404_13@ tools:context@H_404_13@="com.btzh.myxmltest.MainActivity"@H_404_13@>@H_404_13@
    <ScrollView @H_404_13@ android:layout_width@H_404_13@="match_parent"@H_404_13@ android:layout_height@H_404_13@="match_parent"@H_404_13@>@H_404_13@
        <LinearLayout @H_404_13@ android:orientation@H_404_13@="vertical"@H_404_13@ android:layout_width@H_404_13@="match_parent"@H_404_13@ android:layout_height@H_404_13@="match_parent"@H_404_13@>@H_404_13@
            <Button @H_404_13@ android:id@H_404_13@="@+id/spyq_SAX_btn"@H_404_13@ android:text@H_404_13@="SAX解析Xml"@H_404_13@ android:layout_width@H_404_13@="match_parent"@H_404_13@ android:layout_height@H_404_13@="wrap_content"@H_404_13@ />@H_404_13@
            <Button @H_404_13@ android:id@H_404_13@="@+id/spyq_DOM_btn"@H_404_13@ android:text@H_404_13@="DOM解析Xml"@H_404_13@ android:layout_width@H_404_13@="match_parent"@H_404_13@ android:layout_height@H_404_13@="wrap_content"@H_404_13@ />@H_404_13@
            <Button @H_404_13@ android:id@H_404_13@="@+id/spyq_Pull_btn"@H_404_13@ android:text@H_404_13@="Pull解析Xml"@H_404_13@ android:layout_width@H_404_13@="match_parent"@H_404_13@ android:layout_height@H_404_13@="wrap_content"@H_404_13@ />@H_404_13@
            <Button @H_404_13@ android:id@H_404_13@="@+id/spyq_list_btn"@H_404_13@ android:text@H_404_13@="SaX解析转list"@H_404_13@ android:layout_width@H_404_13@="match_parent"@H_404_13@ android:layout_height@H_404_13@="wrap_content"@H_404_13@ />@H_404_13@
            <TextView @H_404_13@ android:textSize@H_404_13@="18sp"@H_404_13@ android:id@H_404_13@="@+id/spyq_text"@H_404_13@ android:layout_width@H_404_13@="match_parent"@H_404_13@ android:layout_height@H_404_13@="wrap_content"@H_404_13@ />@H_404_13@

        </LinearLayout@H_404_13@>@H_404_13@
    </ScrollView@H_404_13@>@H_404_13@

</LinearLayout@H_404_13@>@H_404_13@

效果图(就上传两张吧):

DEMO地址在评论第一条(日了不知为啥,必须全部退出CSDN才能看到上传资源,刷新刷不出来,晕死!)

猜你在找的XML相关文章