pull解析xml,可实现新闻解析、Android更新等

来源:互联网 发布:1998年湖北数据 编辑:程序博客网 时间:2024/06/07 00:25

首先新建一个版本信息类 Version

package com.liwei.blog;public class Version {private String version;private String name;private String url;public String getVersion() {return version;}public void setVersion(String version) {this.version = version;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}@Overridepublic String toString() {return "Version [version=" + version + ", name=" + name + ", url=" + url + "]";}}

MainActivity.class

package com.liwei.blog;//"http://wx.xylbh.cn/android.xml"import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import org.xmlpull.v1.XmlPullParser;import android.os.Bundle;import android.app.Activity;import android.util.Xml;public class XMLActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getNewsInfo();}private void getNewsInfo() {Thread t = new Thread(){@Overridepublic void run() {String path = "http://wx.xylbh.cn/android.xml";try {URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setConnectTimeout(5000);conn.setReadTimeout(5000);if(conn.getResponseCode() == 200){InputStream is = conn.getInputStream();parseNewsXml(is);}} catch (Exception e) {e.printStackTrace();}}};t.start();}private void parseNewsXml(InputStream is) {XmlPullParser xp = Xml.newPullParser();try {xp.setInput(is, "utf-8");int type = xp.getEventType();Version news = null;while(type != XmlPullParser.END_DOCUMENT){switch (type) {case XmlPullParser.START_TAG:if("android".equals(xp.getName())){news = new Version();}else if("version".equals(xp.getName())){String version = xp.nextText();news.setVersion(version);}else if("name".equals(xp.getName())){String name = xp.nextText();news.setName(name);}else if("url".equals(xp.getName())){String url = xp.nextText();news.setUrl(url);}break;case XmlPullParser.END_TAG:break;}type = xp.next();}System.out.println(news.toString());} catch (Exception e) {e.printStackTrace();}}}

运行,控制台就会输出版本信息。pull适合解析包含多个条目的xml数据。比如做新闻客户端,新闻内容一般封装成xml,包含多条信息的标题,内容,图片地址等。这里是测试解析了版本信息,是因为之前做更新,用DOM无法解析,才这样做的。


0 0