网络编程之android后台取服务器端xml解析之dom解析

今天要讲的就是xml解析。
xml现在已经成为一种通用的数据交换格式。
xml解析又分为三种,dom解析,sax解析,pull解析。
首先来给大家讲dom解析。dom解析的特点就是一次性的将数据全部拿到。首先会解析文件,将文件分为独立的元素,属性和注释等,然后以节点树的形式在内存中对xml文件进行表示,就可以通过节点树访问文档的内容,并根据需要修改文档。不建议用dom解析来解析较大的文件,因为会很耗费资源。如果xml文件内容较小倒是可以用这个。
首先创建一个 DocumentBuilderFactory,然后得到一个 DocumentBuilder,最后就是document,这个就是我们要解析的东西了。
常用的dom接口和类:
document:
该接口定义分析并创建dom文档的一系列方法。是文档树的根。是操作dom的基础。
Element:
该接口继承Node接口,提供了获取修改xml元素和属性的方法。
Node:
该接口提供处理并获取节点和子节点值得方法。
NideList:
提供获得节点个数和当前节点的方法,这样就可以迭代地访问各个节点。
DOMParser:该类是Apache的Xerces中的DOM解析器类,可直接解析xml文件。
具体代码:

   protected Object doInBackground(Object[] objects) {
            Log.i("test","跟标签:11111111");
            List fqs=new ArrayList<>();

            //获取网络数据
            //01.定义获取网络的数据的路径
            String path="http://192.168.43.95:8080/hgz_mybatis/add.jsp";
            try {
                //02.实例化Url
                URL url=new URL(path);
                //03.获取连接对象
                HttpURLConnection conn= (HttpURLConnection) url.openConnection();
                //04.设置请求方式
                conn.setRequestMethod("GET");
                //05.设置请求连接超时的时间
                conn.setConnectTimeout(5000);

                //06.获取响应码
                int code=conn.getResponseCode();
                if(code==200){
                    //07.获取返回过来的数据(XML)
                    InputStream is =conn.getInputStream();
                    //08.测试(删除-注释)
                    //缓冲字符流
                    String str=null;
// BufferedReader br=new BufferedReader(new InputStreamReader(is));
// while((str=br.readLine())!=null){
// Log.i("test",str);
// }
                    //09.

              try {
                        DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
                        DocumentBuilder documentBuilder=documentBuilderFactory.newDocumentBuilder();
                        Document document=documentBuilder.parse(is);
                        //获取跟标签
                        Element root=document.getDocumentElement();
                        Log.i("test","跟标签:"+root.getTagName());

                        //Node Element
                        NodeList nodeList=root.getElementsByTagName("fq");
                        for (int i = 0; i //获取属性name
                            String name=element.getAttribute("uid");

                            //获取子标签
                            Element elementContent= (Element) element.getElementsByTagName("uname").item(0);
                            String content=elementContent.getTextContent();

                            Element elementTime= (Element) element.getElementsByTagName("pwd").item(0);
                            String time=elementTime.getTextContent();
                            Log.i("test",name+" "+content+" "+time);

                            FQ fq=new FQ(name,content,time);
                            fqs.add(fq);
                        }
                    } catch (ParserConfigurationException e) {
                        e.printStackTrace();
                    } catch (SAXException e) {
                        e.printStackTrace();
                    }


                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return fqs;
        }

你可能感兴趣的:(网络编程之android后台取服务器端xml解析之dom解析)