Android-解析XML(Dom,Sax,Pull)

来源:互联网 发布:襄阳招聘医院网络 编辑:程序博客网 时间:2024/05/16 20:28
//Dom解析public void ParseXML(View view) {            new MyThread().execute();           //02.解析xml    }       //异步任务类    class MyThread extends AsyncTask{           @Override           protected Object doInBackground(Object[] params) {               try {                   URL url = new URL("http://www.w3school.com.cn/example/xmle/plant_catalog.xml");                   HttpURLConnection connection = (HttpURLConnection) url.openConnection();                   //获得请求方式                   connection.setRequestMethod("GET");                   //设置请求连接超时的时间                   connection.setConnectTimeout(5000);                   //获取结果码                   int code=connection.getResponseCode();                   if (code==200){                       //获取服务器返回来的结果                       InputStream inputStream=connection.getInputStream();                       //打印                      /* BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));                       String str=null;                       while ((str=bufferedReader.readLine())!=null){                           Log.i("test",str);                       }*/                       //使用Dom解析                       DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();                       DocumentBuilder documentBuilder=documentBuilderFactory.newDocumentBuilder();                       Document document=documentBuilder.parse(inputStream);                        //获取跟标签                       Element element=document.getDocumentElement();                       Log.i("test"," 跟标签 "+element.getNodeName());                        //获取跟标签下面的子标签                       NodeList nodeList=element.getElementsByTagName("PLANT");                       for (int i = 0; i < nodeList.getLength(); i++) {                           Element personElement= (Element) nodeList.item(i);                          //获取跟标签下面的内容                          Element COMMON= (Element) personElement.getElementsByTagName("COMMON").item(0);                          String COMMONname=COMMON.getTextContent();                          Element BOTANICAL= (Element) personElement.getElementsByTagName("BOTANICAL").item(0);                          String BOTANICALNname=BOTANICAL.getTextContent();                          Element ZONE= (Element) personElement.getElementsByTagName("ZONE").item(0);                          String ZONENname=ZONE.getTextContent();                          Log.i("test",COMMONname+" "+BOTANICALNname+"  "+ZONENname);                      }                   }               } catch (MalformedURLException e) {                   e.printStackTrace();               } catch (IOException e) {                   e.printStackTrace();               } catch (ParserConfigurationException e) {                   e.printStackTrace();               } catch (SAXException e) {                   e.printStackTrace();               }               return null;               }           @Override           protected void onPostExecute(Object o) {               super.onPostExecute(o);               //03.展示           }       }//Sax解析                                   
SAXParserFactory saxParserFactory=SAXParserFactory.newInstance();                       SAXParser saxParser=saxParserFactory.newSAXParser();                       saxParser.parse(inputStream,new DefaultHandler(){                           @Override                           public void endDocument() throws SAXException {                               super.endDocument();}                           @Override                           public void startDocument() throws SAXException {                               super.startDocument();}                           @Override                           public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {                               super.startElement(uri, localName, qName, attributes);                               currentTag=localName;                               Log.i("ccc",localName);}                           @Override                           public void endElement(String uri, String localName, String qName) throws SAXException {                               super.endElement(uri, localName, qName);                              currentTag=null;
                       }
                             @Override                               public void characters(char[] ch, int start, int length) throws SAXException {                                   super.characters(ch, start, length);                               //正文                                if("COMMON".equals(currentTag)){                                    //获得值                                    String COMMON=new String(ch,start,length);                                    Log.i("test","    "+COMMON);                                }else if ("BOTANICAL".equals(currentTag)){                                    String BOTANICAL=new String(ch,start,length);                                    Log.i("test","    "+BOTANICAL);                                }                              }                            });}               } catch (MalformedURLException e) {                   e.printStackTrace();               } catch (IOException e) {                   e.printStackTrace();               } catch (ParserConfigurationException e) {                   e.printStackTrace();               } catch (SAXException e) {                   e.printStackTrace();               }
                return null;               }           @Override           protected void onPostExecute(Object o) {               super.onPostExecute(o);             }




//Pull解析
  //pull解析                   XmlPullParser xmlpullparser= Xml.newPullParser();                   xmlpullparser.setInput(inputStream,"utf-8");                    //获取解析的标签类型                  int type=xmlpullparser.getEventType();                   while (type!=XmlPullParser.END_DOCUMENT){                         switch (type){                             case XmlPullParser.START_TAG:                                 //获取开始标签的名字                                 String starttagname=xmlpullparser.getName();                                 if ("COMMON".equals(starttagname)){                                     String common=xmlpullparser.nextText();                                     Log.i("test",common);}                                      break;                             case XmlPullParser.END_TAG:                                 break;}                           type=xmlpullparser.next();                    }               } catch (MalformedURLException e) {                   e.printStackTrace();               } catch (IOException e) {                   e.printStackTrace();               } 
catch (XmlPullParserException e) {                   e.printStackTrace();               }                          return null;               }           @Override           protected void onPostExecute(Object o) {               super.onPostExecute(o);               //03.展示           }

                                             
1 0
原创粉丝点击