各大解析:pull解析,pull解析(带属性),dom解析,sax解析
来源:互联网 发布:js截取字符串返回数组 编辑:程序博客网 时间:2024/06/01 08:18
各大解析的使用方法,为了省事,我将它们写在了一起.直接上代码喽
activity.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.bw.lenovo.xmljiexi_demo.MainActivity"> <Button android:id="@+id/pull_btn" android:onClick="onClick" android:text="Pull解析" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/pull_phone_btn" android:onClick="onClick" android:text="pull带属性的解析y" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/Dom_btn" android:onClick="onClick" android:text="Dom解析" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/sax_btn" android:onClick="onClick" android:text="sax解析" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
Phone.xml
<?xml version="1.0" encoding="UTF-8"?><Phone> <phone id="1" name="华为1" price="2000"> <RAM>1</RAM> </phone> <phone id="2" name="华为2" price="2000"> <RAM>2</RAM> </phone> <phone id="3" name="华为3" price="2000"> <RAM>3</RAM> </phone> <phone id="4" name="华为4" price="2000"> <RAM>4</RAM> </phone></Phone>
Student.xml
<?xml version="1.0" encoding="UTF-8"?><Student> <student> <no>15090001</no> <name>小苏</name> <age>18</age> </student> <student> <no>15090001</no> <name>小苏</name> <age>18</age> </student> <student> <no>15090001</no> <name>小苏</name> <age>18</age> </student></Student>
Phone
package com.bw.lenovo.xmljiexi_demo;public class Phone { private String name; private int price; private int ARM; public Phone() { this.name = name; this.price = price; this.ARM = ARM; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public int getARM() { return ARM; } public void setARM(int ARM) { this.ARM = ARM; } @Override public String toString() { return "Phone{" + "name='" + name + '\'' + ", price=" + price + ", ARM=" + ARM + '}'; }}
Student
package com.bw.lenovo.xmljiexi_demo;/** * Created by lenovo on 2017/11/16. */public class Student { private String no; private String name; private int age; public Student() { this.no = no; this.name = name; this.age = age; } public String getNo() { return no; } public void setNo(String no) { this.no = no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student{" + "no='" + no + '\'' + ", name='" + name + '\'' + ", age=" + age + '}'; }}
MyHandler
package com.bw.lenovo.xmljiexi_demo;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;import java.util.ArrayList;public class MyHandler extends DefaultHandler{ ArrayList<Student> list = new ArrayList<Student>(); Student stu = new Student(); String tageName;//用来记录正在解析的标签 @Override public void characters(char[] ch, int start, int length) throws SAXException { switch (tageName){ case "no": stu.setNo(new String(ch,start,length)); break; case "name": stu.setName(new String(ch,start,length)); break; case "age": stu.setAge(Integer.parseInt(new String(ch,start,length))); break; } } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (qName.equals("student")){ stu = new Student(); } tageName = qName; } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if (qName.equals("student")){ list.add(stu); } tageName = ""; } /* 文件开始解析结束时调用,不做操作 */ @Override public void endDocument() throws SAXException { }}
Data
public class Data { private String title; private String url; public Data(String title, String url) { this.title = title; this.url = url; } public Data(){ } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } @Override public String toString() { return "Data{" + "title='" + title + '\'' + ", url='" + url + '\'' + '}'; }}
Dog
package com.bw.lenovo.xmljiexi_demo.demo;public class Dog { private int id; private String name; private int age; public Dog(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } public Dog() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Dog{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; }}
Main2Activity
package com.bw.lenovo.xmljiexi_demo.demo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import com.bw.lenovo.xmljiexi_demo.R;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import java.util.ArrayList;public class Main2Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); initJson1(); initJson2(); initJson3(); initJson4(); } private void initJson4() { String str = "{'list':[{'id':1,'name':'旺财','age':2},{'id':2,'name':'花花','age':3},{'id':3,'name':'小黑','age':4}]}"; ArrayList<Dog> list = new ArrayList<>(); try { JSONObject jo = new JSONObject(str); JSONArray ja = jo.getJSONArray("list"); for (int i = 0; i < ja.length(); i++) { JSONObject jo1 = ja.getJSONObject(i); int id = jo1.getInt("id"); String name = jo1.getString("name"); int age = jo1.getInt("age"); Dog dog = new Dog(id,name,age); list.add(dog); } } catch (JSONException e) { e.printStackTrace(); } } private void initJson3() { String str = "{'dog1':{'id':1,'name':'旺财','age':2},'dog2':{'id':2,'name':'花花','age':3},'dog3':{'id':3,'name':'小黑','sex':'男','age':4}}"; try { JSONObject jo = new JSONObject(str); JSONObject jo1 = jo.getJSONObject("dog1"); int id1 = jo1.getInt("id"); String name1 = jo1.getString("name"); int age1 = jo1.getInt("age"); Dog dog1 = new Dog(id1,name1,age1); JSONObject jo2 = jo.getJSONObject("dog2"); int id2 = jo2.getInt("id"); String name2 = jo2.getString("name"); int age2 = jo2.getInt("age"); Dog dog2 = new Dog(id1,name1,age1); JSONObject jo3 = jo.getJSONObject("dog3"); int id3 = jo3.getInt("id"); String name3 = jo3.getString("name"); int age3 = jo3.getInt("age"); String sex = jo3.getString("sex"); Dog dog3 = new Dog(id1,name1,age1); } catch (JSONException e) { e.printStackTrace(); } } private void initJson2() { String str = "{'dog':{'id':13,'name':'小花','age':2}}"; try { JSONObject jo = new JSONObject(str); JSONObject jo1 = jo.getJSONObject("dog"); int id = jo1.getInt("id"); String name = jo1.getString("name"); int age = jo1.getInt("age"); Dog dog = new Dog(id,name,age); Log.d("lsc", "initJson2: "+dog.toString()); } catch (JSONException e) { e.printStackTrace(); } } private void initJson1() { String str = "{'id':12,'name':'旺财','age':1}"; try { JSONObject jo = new JSONObject(str); int id = jo.getInt("id"); String name = jo.getString("name"); int age = jo.getInt("age"); Dog dog = new Dog(id,name,age); Log.d("lsc", "initJson1: "+dog.toString()); } catch (JSONException e) { e.printStackTrace(); } }}
PareUtils
package com.bw.lenovo.xmljiexi_demo.demo;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import java.util.ArrayList;/** * Created by lenovo on 2017/11/16. */public class PareUtils { public static ArrayList<Data> getDatas(String str){ ArrayList<Data> list = new ArrayList<>(); try { JSONObject jo = new JSONObject(str); JSONArray ja = jo.getJSONArray("itemList"); for (int i = 0; i < ja.length(); i++) { JSONObject jo1 = ja.getJSONObject(i); JSONObject jo2 = jo1.getJSONObject("data"); String title = null; if (jo2.has("title")){ title = jo2.getString("title"); } String url = null; if (jo2.has("playInfo")){ JSONArray ja2 = jo2.getJSONArray("playInfo"); for (int j = 0; j < ja2.length(); j++) { JSONObject jo3 = ja2.getJSONObject(j); String name = jo3.getString("name"); if(name.equals("高清")){ url = jo3.getString("url"); } } } Data data = new Data(title,url); list.add(data); } return list; } catch (JSONException e) { e.printStackTrace(); } return null; }}
MainActivity
package com.bw.lenovo.xmljiexi_demo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import org.xmlpull.v1.XmlPullParserFactory;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClick(View view) throws IOException, SAXException, ParserConfigurationException, XmlPullParserException { switch (view.getId()){ case R.id.pull_btn: pullXMlstuJieXi();//pull解析 break; case R.id.pull_phone_btn://pull解析 带属性 pullXmlPhoneJieXi(); break; case R.id.Dom_btn://dom解析 domXmlStudentJieXi(); break; case R.id.sax_btn: saxXmlStudentJieXi();//sax解析 break; } } private void domXmlStudentJieXi() throws ParserConfigurationException,IOException,SAXException { List<Student> students = new ArrayList<>(); //获取DOM解析器工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //获取DOM解析器 DocumentBuilder builder = factory.newDocumentBuilder(); //将解析树放入内存,通过返回值Document来描述结果 Document document = builder.parse(getResources().getAssets().open("Student.xml")); //获取根元素<</Student>> Element root = document.getDocumentElement(); //取得所有student节点集合 NodeList personNodes = root.getElementsByTagName("student"); for (int i = 0; i < personNodes.getLength(); i++) { Student stu = new Student(); //取得student节点元素 Element personElement = (Element) personNodes.item(i); //取得属性值并设置ID// stu.setNo(personElement.getAttribute("no"));// stu.setName(personElement.getAttribute("name"));// stu.setAge(Integer.parseInt(personElement.getAttribute("age"))); //获取person的子节点 NodeList personChilds = personElement.getChildNodes(); for (int j = 0; j < personChilds.getLength(); j++) { //判断person当前节点是否是元素类型的节点 if (personChilds.item(j).getNodeType() == Node.ELEMENT_NODE) { { Element childElement = (Element) personChilds.item(j); String nodeName = childElement.getNodeName(); switch (nodeName) { case "no": //获取节点的值 stu.setNo(childElement.getFirstChild().getNodeValue()); break; case "name": stu.setName(childElement.getFirstChild().getNodeValue()); break; case "age": stu.setAge(Short.parseShort(childElement.getFirstChild().getNodeValue())); break; } } } students.add(stu); } for (Student stu2 : students) { Log.d("lsc", "domXmlStudentJieXi: " + stu); } } } private void saxXmlStudentJieXi() throws ParserConfigurationException,SAXException,IOException{ SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); MyHandler mh = new MyHandler(); sp.parse(getResources().getAssets().open("Student.xml"),mh); ArrayList<Student> list = mh.list; for (Student student : list) { Log.d("lsc", "saxXmlStudentJieXi: "+student); } } private void pullXmlPhoneJieXi() throws XmlPullParserException,IOException{ //解析工厂 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); //解析器 XmlPullParser parser = factory.newPullParser(); Phone phone = null; int e = XmlPullParser.START_DOCUMENT; ArrayList<Phone> list = new ArrayList<Phone>(); parser.setInput(getResources().getAssets().open("Phone.xml"), "UTF-8"); String name; while (e!=XmlPullParser.END_DOCUMENT) { name = parser.getName(); switch (e) { case XmlPullParser.START_TAG: switch (name) { case "phone": phone = new Phone(); for (int i = 0; i < parser.getAttributeCount(); i++) { switch (parser.getAttributeName(i)) { case "name": phone.setName(parser.getAttributeValue(i)); break; case "price": phone.setPrice(Integer.parseInt(parser.getAttributeValue(i))); break; } } break; case "RAM": phone.setARM(Integer.parseInt(parser.nextText())); break; } break; case XmlPullParser.END_TAG: if(name.equals("phone")){ list.add(phone); } break; } e = parser.next(); } for (Phone phone2 : list) { Log.d("sxl", "pullXmlPhoneJieXi: "+phone2); } } private void pullXMlstuJieXi() throws XmlPullParserException, IOException { XmlPullParserFactory xpf = XmlPullParserFactory.newInstance(); //解析器 XmlPullParser xpp = xpf.newPullParser(); xpp.setInput(getResources().getAssets().open("Student.xml"),"UTF-8"); ArrayList<Student> list = new ArrayList<Student>(); //获得事件类型 int e = xpp.getEventType(); Student stu=null; while (e!=XmlPullParser.END_DOCUMENT) { switch (e) { case XmlPullParser.START_TAG: String name = xpp.getName(); switch (name) { case "student": stu= new Student(); break; case "no": stu.setNo(xpp.nextText()); break; case "name": stu.setName(xpp.nextText()); break; case "age": stu.setAge(Integer.parseInt(xpp.nextText())); break; } break; case XmlPullParser.END_TAG: String name1 = xpp.getName(); switch (name1) { case "student": list.add(stu); break; } break; } //移动到下一个 e = xpp.next(); } for (Student s : list) { Log.d("sxl", "pullXMlJieXi: "+s); } }}
阅读全文
0 0
- 各大解析:pull解析,pull解析(带属性),dom解析,sax解析
- Sax,Pull,Dom解析
- DOM、SAX、PULL解析
- pull解析DOM解析SAX解析
- sax、dom、pull解析xml
- SAX、DOM、PULL解析XML
- Dom Sax Pull解析xml
- sax、dom、pull解析xml
- sax、dom、pull解析xml
- sax dom pull 解析xml
- 解析XML:DOM、SAX、PULL
- DOM SAX和PULL解析
- DOM、SAX、Pull解析XML
- pull,sax,dom解析XML
- 解析XML:DOM,SAX,PULL
- DOM、SAX、Pull解析XML
- xml解析:Sax,Dom,pull解析
- XML解析之PULL解析+SAX解析+DOM解析
- Android中EditText的inputType属性
- Android adb shell启动应用程序的方法
- AngularJs查询,添加,修改
- C++中对象的生存周期
- SpringMVC与Spring整合,配置web.xml
- 各大解析:pull解析,pull解析(带属性),dom解析,sax解析
- 安卓仿QQ红包领取详情界面动画
- Android Tv U盘挂载
- 多线程续传下载(可搜索网址,没有暂停按钮) + ijk播放视屏
- windws下搭建gitblit服务器
- RPC基本原理
- 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
- Webdriver byclassname error:"Compound class names not permitted
- 使用自定义事件的表单输入组件