使用pull解析xml
发布时间:2020-12-16 00:19:41 所属栏目:百科 来源:网络整理
导读:测试工程目录: 要解析的xml(person.xml)文件:(在MyEclipse的web测试工程里部署) ?xml version="1.0" encoding="UTF-8"?personsperson id="23"namejack/nameage30/age/personperson id="20"namerose/nameage25/age/person/persons 要用到的jar类库,htt
测试工程目录:
要解析的xml(person.xml)文件:(在MyEclipse的web测试工程里部署) <?xml version="1.0" encoding="UTF-8"?> <persons> <person id="23"> <name>jack</name> <age>30</age> </person> <person id="20"> <name>rose</name> <age>25</age> </person> </persons>要用到的jar类库,http://yunpan.cn/cA7m8Y2CzN9Ah 提取码 c6eb Person.java : package com.pull.domain; public class Person { private int id; private String name; private int age; 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 "Person [id=" + id + ",name=" + name + ",age=" + age + "]"; } }PullXmlTools.java:解析xml文件 /** * android适用,因为android本身就是用这个方法解析xml */ package com.pull.parser; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import com.pull.domain.Person; public class PullXmlTools { public PullXmlTools() { // TODO Auto-generated constructor stub } /** * @param inputStream * 从服务器获取xml文件,以流的方式返回 * @param encode * 编码格式 * @return * @throws Exception */ public List<Person> paserXml(InputStream inputStream,String encode) throws Exception { List<Person> list = null; Person person = null; // 创建一个xml解析工厂 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); // 获得xml解析类的对象 XmlPullParser parser = factory.newPullParser(); parser.setInput(inputStream,encode); //设置解析对象要解析的流,就流的编码 // 获得事件类型 int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { switch (eventType) { case XmlPullParser.START_DOCUMENT: //文档开头 list = new ArrayList<Person>(); break; case XmlPullParser.START_TAG: //遇到开始标签 if ("person".equals(parser.getName())) { person = new Person(); int id = Integer.parseInt(parser.getAttributeValue(0));//开始标签的属性 person.setId(id); } else if ("name".equals(parser.getName())) { //内容标签 String name = parser.nextText(); //获取节点的内容 person.setName(name); } else if ("age".equals(parser.getName())) { int age = Integer.parseInt(parser.nextText()); person.setAge(age); } break; case XmlPullParser.END_TAG: if ("person".equals(parser.getName())) { list.add(person); person = null; } break; } eventType = parser.next(); //循环条件 } return list; } }从服务器获取xml文件HttpUtils.java: package com.pull.http; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class HttpUtils { /** * 传入路径url * @param path * @return */ public static InputStream getXml(String path) { InputStream inputStream = null; try { URL url = new URL(path); //路径转化为url //通过在 URL 上调用 openConnection 方法创建连接对象。 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); //设置请求方式 conn.setReadTimeout(3000); conn.setDoInput(true); //服务器到客户端可输入流(不知道怎么说) int responseCode = conn.getResponseCode(); //获取服务器响应代码 if(responseCode == 200){ inputStream = conn.getInputStream(); //获取输入流形式的xml return inputStream; } } catch (Exception e) { // TODO: handle exception } return null; } }测试一下Test.java: package com.pull.test; import java.io.InputStream; import java.util.List; import com.pull.domain.Person; import com.pull.http.HttpUtils; import com.pull.parser.PullXmlTools; public class Test { public static void main(String[] args) { String path = "http://140.237.253.221:8080/news/person.xml";//写入自己的IP地址,这个不用说吧! InputStream is = HttpUtils.getXml(path); PullXmlTools pullXml = new PullXmlTools(); List<Person> list = null; try { list = pullXml.paserXml(is,"utf-8"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } for (Person person : list) { System.out.println(person.toString()); } } }测试结果:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读