//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.展示 }
Android-解析XML(Dom,Sax,Pull)
最新推荐文章于 2024-09-14 17:21:38 发布