要解析的网络文件:http://www.jinghua.cn/iphone/xml/bj.xml
解析代码
/**
* 从网络地址URL读取XML文件用Pull解析XML---解析jinghua2.xml
* @param xmlUrlPath xml的网络地址
* @return 阿福
* @throws Exception
*/
public static List<News> URLReadXmlByPull(String xmlUrlPath) throws Exception{
List<News> listNews = new ArrayList<News>();;
News news = null;
URL url = new URL(xmlUrlPath);
//构建XmlPullParserFactory
XmlPullParserFactory pullParserFactory = XmlPullParserFactory.newInstance();
//获取XmlPullParser的实例
XmlPullParser xmlPullParser = pullParserFactory.newPullParser();
Log.i("PullParseXML", "getXML......");
//设置输入流 xml文件装载器
xmlPullParser.setInput(url.openConnection().getInputStream(), "UTF-8");
//开始
Log.i("PullParseXML", "PullParseXML....start....");
/**
* pull读到xml后 返回数字
* 读取到xml的声明返回数字0 START_DOCUMENT;
读取到xml的结束返回数字1 END_DOCUMENT ;
读取到xml的开始标签返回数字2 START_TAG
读取到xml的结束标签返回数字3 END_TAG
读取到xml的文本返回数字4 TEXT
*/
int eventType=xmlPullParser.getEventType();
/**
* 只要这个事件返回的不是1 我们就一直读取xml文件
*/
while(eventType != XmlPullParser.END_DOCUMENT){
String nodeName=xmlPullParser.getName();
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
if("item".equals(nodeName)){
news = new News();
}
if("title".equals(nodeName) && news != null){
news.setTitle(xmlPullParser.nextText());
}
if("link".equals(nodeName) && news != null){
news.setLink(xmlPullParser.nextText());
}
if("author".equals(nodeName) && news != null){
news.setAuthor(xmlPullParser.nextText());
}
if("guid".equals(nodeName) && news != null){
news.setGuid(xmlPullParser.nextText());
}
if("image".equals(nodeName) && news != null){
news.setImage(xmlPullParser.nextText());
}
if("video".equals(nodeName) && news != null){
news.setVideo(xmlPullParser.nextText());
}
if("category".equals(nodeName) && news != null){
news.setCategory(xmlPullParser.nextText());
}
if("pubDate".equals(nodeName) && news != null){
news.setPubDate(xmlPullParser.nextText());
}
if("comments".equals(nodeName) && news != null){
news.setComments(xmlPullParser.nextText());
}
if("description".equals(nodeName) && news != null){
news.setDescription(xmlPullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if("item".equals(nodeName)){
listNews.add(news);
}
break;
default:
break;
}
eventType = xmlPullParser.next();
}
return listNews;
}
使用时
//从网络读取XML文件用Pull解析XML---解析jinghua2.xml(http://www.jinghua.cn/iphone/xml/bj.xml)
public void testPullRead3() throws Throwable{
List<News> persons = ReadXmlByPullService.URLReadXmlByPull("http://www.jinghua.cn/iphone/xml/bj.xml");
for(News person : persons){
Log.i(TAG, person.toString());
}
}
实体
package com.yangguangfu.xml.domain;
/**
* 新闻
*
* @author 阿福
*
*/
public class News {
private String title;
private String link;
private String author;
private String guid;
private String image;
private String video;
private String category;
private String pubDate;
private String comments;
private String description;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getGuid() {
return guid;
}
public void setGuid(String guid) {
this.guid = guid;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getVideo() {
return video;
}
public void setVideo(String video) {
this.video = video;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getPubDate() {
return pubDate;
}
public void setPubDate(String pubDate) {
this.pubDate = pubDate;
}
public String getComments() {
return comments;
}
public void setComments(String comments) {
this.comments = comments;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "title=" + title + "guid=" + guid + ",link=" + link
+ ",description=" + description + ",image=" + image + ",video="
+ video + ",category=" + category + ",author=" + author
+ ",pubDate=" + pubDate + ",comments=" + comments;
}
}
分享到:
相关推荐
android xml pull解析示例,自己mark下,备忘
Android网络编程之Pull解析XML文件~
在Android中,使用SAX和PULL解析XML,本项目中以解析天气预报为例。 详情见博客:http://blog.csdn.net/yalin18/article/details/7437752
在Android平台上基于Pull方式对XML文件进行解析
在android平台下使用PULL解析XML源码。
pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...
实现pull方式解析xml文件,xml文件放置在assets文件夹,View绑定使用butterknife
Android 封装pull解析xml,可直接调用
使用Android自带的XML解析器PULL解析器简单的解析xml,并将内容显示在TestView上,代码简化过。
Android Pull 解析 XML
在android中使用pull解析xml文件
Android ReadXmlByPull 使用Pull解析Xml文件.rar
Android之PULL解析XML
Android 生成和PULL解析xml,生成的例子和PULL解析的例子,很详细。。
分别实现了android 最常用的SAX和PULL解析方式,并附有详尽分析
pull解析和生成xml文件,使用pull解析本地的xml文件,并且生成了一个不同格式的新的xml文件
pull解析xml文件
Android Pull解析xml文件.
XML解析AndroidPull解析代码
使用pull解析xml 模板已经写好 只需导入即可用,将里面的解析类导入到其他工程也可用,不必麻烦在写了