Android 从Java后台取数据之解析XML
2017-02-26 15:10
309 查看
Android 从Java后台取数据。数据格式一般有两种,XML和JSON。下面我给大家分享一下解析XML的三种方式。
第一种:使用DOM解析(原生态)
第二种:2.SAX解析 特点:边读边解析 基于事件(方法)驱动方式
第三种:Pull 解析xml(Android),这个是Android封装的
希望我的分析对大家能有所帮助!
第一种:使用DOM解析(原生态)
try { //1 使用DOM解析 //得到DOM工厂 DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=builderFactory.newDocumentBuilder(); Document document=builder.parse(is); //获取根标签 Element root=document.getDocumentElement(); Log.i("tt","根标签:"+root); //获取根节点 NodeList nodeList=root.getElementsByTagName("pstudent"); for (int i = 0; i < nodeList.getLength(); i++) { Element element= (Element) nodeList.item(i); //获取标签的属性name String uid=element.getAttribute("name"); //获取子标签<uname><age> Element e1= (Element) element.getElementsByTagName("uname").item(0); String uname=e1.getTextContent(); Element e2= (Element)element.getElementsByTagName("age").item(0); String age=e2.getTextContent(); User user=new User(uid,uname,age); listUser1.add(user); } } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); }*/
第二种:2.SAX解析 特点:边读边解析 基于事件(方法)驱动方式
try { SAXParserFactory saxParserFactory=SAXParserFactory.newInstance(); SAXParser saxParser=saxParserFactory.newSAXParser(); saxParser.parse(is,new DefaultHandler(){ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { super.startElement(uri, localName, qName, attributes); //得到开始标签 currentTag = localName; if ("User".equals(currentTag)){ //得到属性name的值 user = new User(); String uid=attributes.getValue(0); user.setUid(uid); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { super.endElement(uri, localName, qName); //设置currentTag清空 currentTag=null; if ("User".equals(currentTag)){ listUser1.add(user); } } @Override public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); //获取标签文本值 if ("uname".equals(currentTag)){ String uname=new String(ch,start,length); user.setUname(uname); }else if("age".equals(currentTag)){ String age=new String(ch,start,length); user.setAge(age); } } @Override public void endDocument() throws SAXException { super.endDocument(); } @Override public void startDocument() throws SAXException { super.startDocument(); } }); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); }*/
第三种:Pull 解析xml(Android),这个是Android封装的
XmlPullParser pullParser=Xml.newPullParser(); pullParser.setInput(is,"UTF-8"); //获取标签类型 int type=pullParser.getEventType(); while (type!=pullParser.END_DOCUMENT) { switch (type) { case XmlPullParser.START_TAG: //获取开始标签的名字 String startTagName=pullParser.getName(); user=new User(); if ("User".equals(startTagName)){ String uid=pullParser.getAttributeValue(0); user.setUid(uid); }else if("uname".equals(startTagName)){ String uname=pullParser.nextText(); user.setUname(uname); }else if ("age".equals(startTagName)){ String age=pullParser.nextText(); user.setAge(age); } break; case XmlPullParser.END_TAG: //获取结束标签的名字 String endTagName=pullParser.getName(); if("User".equals(endTagName)){ listUser1.add(user); } break; } } type=pullParser.next(); } catch (XmlPullParserException e) { e.printStackTrace(); }
希望我的分析对大家能有所帮助!
相关文章推荐
- Android从后台获取数据xml解析之sax解析
- Android/Java XML数据格式解析的两种方式
- Android 与 web后台数据交互之解析XML和JSON
- Android前后台传数据乱码,xml
- Android Json 数据解析 II 之 ------xml ,json 两种数据格式之对比
- android xml解析技术 json数据传输技术
- Android访问网络系列之--服务端返回XML或JSON格式数据,Android 进行解析并显示
- Android dom解析XML数据
- Android 解析后台返回为Json数据的简单例子!!!
- Java 解析xml数据 sax
- 【Android Training - Connectivity】基本网络操作 [ Lesson 3 - 详解如何解析XML数据 ]
- Android 解析后台返回为Json数据的简单例子!!!
- Android 获取Google Weather API 并通过Xml和JSON解析数据
- Android pull解析XML数据
- android-利用xml解析和生成数据
- java中处理xml数据性能不能大幅提高的根本原因 - 继续追寻高性能xml解析方法
- android之xml数据解析(SAX)
- android之xml数据解析(DOM)
- android之xml数据解析(Pull)
- Android XML解析并将数据存放在数据库中