要解析的网络文件: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解析是一种轻量级且高效的解析XML文档的方法,它允许应用程序按需读取XML文档的节点,而无需加载整个文档到内存中。以下是关于Android XML Pull解析的详细知识讲解。 1. **XML Pull解析器...
该文章详细介绍了在Android环境下如何使用SAX和PULL解析XML,包括代码示例和步骤说明,对于初学者来说非常有帮助。 最后,压缩包中的"Weather"文件很可能是示例的天气预报XML数据。通过实际解析这个文件,你可以更...
总结,Android的Pull解析XML文件是一种高效、节省资源的解析方式,适用于网络通信中的数据交换。通过创建Pull解析器实例,监听XML事件,以及适当优化,开发者可以轻松处理XML数据,实现更流畅的用户体验。在实际开发...
"Android pull解析xml源码"这个主题聚焦于使用Android的XML Pull解析器来理解和操作XML文档。Pull解析器是一种事件驱动的解析方法,与DOM(Document Object Model)和SAX(Simple API for XML)不同,它不需要将整个...
**使用PULL解析XML的步骤** 1. **引入库** 首先,在Android项目中,我们需要引入`xmlpull.org`的库,这个库已经被包含在Android SDK中,无需额外下载。在代码中,我们可以通过以下方式获取到PULL解析器: ```java ...
总结,本教程介绍了如何在Android中使用PULL解析XML,以及如何结合ButterKnife进行视图绑定。PULL解析提供了高效且内存友好的方式处理XML数据,而ButterKnife则简化了UI组件的管理,两者结合能有效提升开发效率。...
pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...
以下是一些关于封装Pull解析XML的关键知识点: 1. **创建XMLPullParser实例**: Android系统提供了`XmlPullParserFactory`类,通过`newInstance()`方法创建XMLPullParser的工厂对象,然后使用`newPullParser()`...
Android系统提供了一种轻量级的XML解析方式——PULL解析器(Pull Parser),它适用于处理大型XML文档,因为它不需要像DOM解析器那样一次性加载整个XML文档到内存中。PULL解析器通过事件驱动的方式,按需解析XML文档...
本文将深入探讨如何在Android中使用Pull解析器解析XML文件。 一、XML Pull解析器简介 XML Pull解析器(XML Pull API)是一种基于事件驱动的解析模型,它不需预先加载整个XML文档,而是逐行读取,当遇到特定的XML...
总之,Android提供了SAX和PULL两种解析XML的手段,开发者可以根据具体情况灵活选择。在内存有限或者需要高效处理大量XML数据的情况下,SAX可能是更好的选择;而在追求简洁代码和快速开发的场合,PULL解析则更为便捷...
本文将深入探讨Android中的Pull解析XML技术,以及如何利用模板快速实现XML的解析。 首先,理解XML Pull解析器的工作原理是至关重要的。在Android中,XML Pull解析是一种轻量级处理XML文档的方式,它允许应用移动...
本文将深入探讨Android中的XML Pull解析,包括基本概念、使用方法以及本地和网络XML数据的处理。 一、XML Pull解析基础 XML Pull解析是一种事件驱动的解析方式,它不像DOM解析那样一次性加载整个XML文档到内存中,...
总的来说,Android的Pull解析器不仅用于解析XML,还能用于生成XML文件,这在某些场景下非常有用,例如自定义数据格式的存储或网络通信中的数据序列化。通过Pull解析器生成XML,开发者可以精确地控制XML的结构和内容...
本文将深入探讨如何在Android中生成XML文件以及如何使用PULL解析器来解析XML数据。 首先,我们来看一下如何在Android中生成XML文件。生成XML文件通常涉及创建一个XMLWriter对象,然后通过调用其方法来添加元素、...
在Android开发中,Pull解析是一种常用的XML解析方式,它提供了高效、线程安全的解析机制。本项目"android pull解析 创建xmlw文件"是一个完整的工程示例,旨在帮助开发者理解和应用XML Pull解析来创建XML文件,尤其是...
综上所述,Android中的Pull解析器提供了一种高效、低内存消耗的解析XML的方式。通过创建解析器、设置输入源、处理事件以及异常处理,开发者可以轻松地读取和解析XML文件。在实际应用中,可以根据具体需求调整解析...
首先,我们引入Android的`org.xmlpull.v1.XmlPullParser`接口,它是实现Pull解析的核心。这个接口定义了一系列的方法,如`next()`用于移动到下一个事件,`getName()`用于获取当前事件的标签名,以及`getText()`用于...
PULL解析是Android专门为移动设备优化的一种解析方式,它允许开发者主动拉取XML数据,而不是被动等待事件触发。这种方式更节省资源,且易于控制解析流程。 1. 创建解析器 使用`XmlPullParserFactory`创建`...
【Android Pull解析XML】 在Android开发中,处理XML数据时,常常会用到两种轻量级的解析方式:SAX解析和Pull解析。本篇主要介绍Android中的Pull解析XML,这是一种事件驱动的解析方式,允许应用程序按需读取XML文档...