`

Android的PULL解析互联网上的XML文件

 
阅读更多
public class XmlActivity extends Activity {
 private ListView listView;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  listView = (ListView) this.findViewById(R.id.listView);

  try {
   List<Video> videos = VideoService.getLastVides();

   List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();

   for (Video video : videos) {
    HashMap<String, Object> item = new HashMap<String, Object>();
    item.put("id", video.getId());
    item.put("title", video.getTitle());
    item.put("timelength", video.getTime());
    data.add(item);
   }

   SimpleAdapter adapter = new SimpleAdapter(this, data,
     R.layout.item, new String[] { "title", "timelength" },
     new int[] { R.id.title, R.id.timelength });
   listView.setAdapter(adapter);
  } catch (Exception e) {
   Toast.makeText(XmlActivity.this, "获取最新资讯失败", 1);
   Log.e("XmlActivity", e.toString());
  }

 }
}

 

 

public class VideoService {







public static void save(List<Person> persons, OutputStream outStream) throws Throwable{
  XmlSerializer serializer = Xml.newSerializer();
  serializer.setOutput(outStream,"UTF-8");
  serializer.startDocument("UTF-8", true);
  
  serializer.startTag(null, "persons");
  
  for(Person person:persons){
   serializer.startTag(null, "person");
   serializer.attribute(null, "id", String.valueOf(person.getId()));
   
   
   serializer.startTag(null, "name");
   serializer.text(person.getName());
   serializer.endTag(null, "name");
   
   serializer.startTag(null, "age");
   serializer.text(String.valueOf(person.getAge()));
   serializer.endTag(null, "age");
   
   
   serializer.endTag(null, "person");
  }
  
  serializer.endTag(null, "persons");
  serializer.endDocument();
  outStream.close();
 }



 public static List<Video> getLastVides() throws Exception{
  String path = "http://www.secn.com.cn";
  URL url = new URL(path);
  HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  conn.setReadTimeout(5*1000);
  conn.setRequestMethod("GET");
  InputStream inStream = conn.getInputStream();
  return ParserXML(inStream);
 }

 private static List<Video> ParserXML(InputStream inStream) throws XmlPullParserException, IOException {
  List<Video> videos = null;
  Video video = null;
  XmlPullParser parser = Xml.newPullParser();
  parser.setInput(inStream, "UTF-8");
  int eventType = parser.getEventType();//产生第一个事件
  while(eventType!=XmlPullParser.END_DOCUMENT){//只要不是文档结束事件
   switch (eventType) {
   case XmlPullParser.START_DOCUMENT:
    videos = new ArrayList<Video>();
    break;
 
   case XmlPullParser.START_TAG:
    String name = parser.getName();//获取解析器当前指向的元素的名称
    if("video".equals(name)){
     video = new Video();
     video.setId(new Integer(parser.getAttributeValue(0)));
    }
    if(video!=null){
     if("title".equals(name)){
      video.setTitle(parser.nextText());//获取解析器当前指向元素的下一个文本节点的值
     }
     if("timelength".equals(name)){
      video.setTime(new Integer(parser.nextText()));
     }
    }
    break;
    
   case XmlPullParser.END_TAG:
    if("video".equals(parser.getName())){
     videos.add(video);
     video = null;
    }
    break;
   }
   eventType = parser.next();
  }
  return videos;
 }
 
}

 

 

 

public class Video {

 private int id;
 private String title;
 private int time;
 
 public Video() {}
 public Video(int id, String title, int time) {
  this.id = id;
  this.title = title;
  this.time = time;
 }
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getTitle() {
  return title;
 }
 public void setTitle(String title) {
  this.title = title;
 }
 public int getTime() {
  return time;
 }
 public void setTime(int time) {
  this.time = time;
 }

 
 
 
}


 

 

访问互联网权限:<uses-permission android:name="android.permission.INTERNET" />

分享到:
评论

相关推荐

    android xml pull解析示例

    在Android系统中,XML Pull解析是一种轻量级且高效的解析XML文档的方法,它允许应用程序按需读取XML文档的节点,而无需加载整个文档到内存中。以下是关于Android XML Pull解析的详细知识讲解。 1. **XML Pull解析器...

    Android中,使用SAX和PULL解析天气预报XML

    该文章详细介绍了在Android环境下如何使用SAX和PULL解析XML,包括代码示例和步骤说明,对于初学者来说非常有帮助。 最后,压缩包中的"Weather"文件很可能是示例的天气预报XML数据。通过实际解析这个文件,你可以更...

    android之Pull解析XML文件

    总结,Android的Pull解析XML文件是一种高效、节省资源的解析方式,适用于网络通信中的数据交换。通过创建Pull解析器实例,监听XML事件,以及适当优化,开发者可以轻松处理XML数据,实现更流畅的用户体验。在实际开发...

    android中使用PULL解析XML

    **使用PULL解析XML的步骤** 1. **引入库** 首先,在Android项目中,我们需要引入`xmlpull.org`的库,这个库已经被包含在Android SDK中,无需额外下载。在代码中,我们可以通过以下方式获取到PULL解析器: ```java ...

    android pull解析xml源码

    "Android pull解析xml源码"这个主题聚焦于使用Android的XML Pull解析器来理解和操作XML文档。Pull解析器是一种事件驱动的解析方法,与DOM(Document Object Model)和SAX(Simple API for XML)不同,它不需要将整个...

    Pull解析与生成Xml

    在解析XML文件时,我们需要创建一个`XmlPullParser`实例,并设置输入源(通常是从文件或流)。然后进入一个循环,通过`next()`方法遍历XML的各个事件,如START_DOCUMENT、START_TAG、END_TAG和TEXT等。根据事件类型...

    在android中使用pull解析xml文件

    本文将深入探讨如何在Android中使用Pull解析器解析XML文件。 一、XML Pull解析器简介 XML Pull解析器(XML Pull API)是一种基于事件驱动的解析模型,它不需预先加载整个XML文档,而是逐行读取,当遇到特定的XML...

    android使用pull 解析xml文件源码

    pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...

    Android PULL解析XML

    总结,本教程介绍了如何在Android中使用PULL解析XML,以及如何结合ButterKnife进行视图绑定。PULL解析提供了高效且内存友好的方式处理XML数据,而ButterKnife则简化了UI组件的管理,两者结合能有效提升开发效率。...

    android pull解析 创建xmlw文件

    综上所述,"android pull解析 创建xmlw文件"的工程实例是学习和实践XML Pull解析在Android中创建XML文件的良好资源。通过这个项目,开发者可以深入理解XML Pull解析的工作原理,并掌握如何在Android中利用XML Pull...

    android下的pull解析器解析和生成xml文件

    以下是一个简单的示例,展示如何使用Pull解析器解析XML文件: ```java XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser(); parser.setInput...

    android SAX PULL 解析XML文件 代码 详解

    SAX解析适合大型XML文件和复杂结构,而PULL解析则适用于小型XML文件和简单结构。在提供的`SAXParseDemo`项目中,你可以找到具体的SAX解析实现,通过阅读和理解代码,可以更好地掌握这两种解析方法的使用。 总之,...

    Android ReadXmlByPull 使用Pull解析Xml文件.rar

    在Android开发中,处理XML数据是一项常见的任务...通过创建解析器、设置输入源、处理事件以及异常处理,开发者可以轻松地读取和解析XML文件。在实际应用中,可以根据具体需求调整解析逻辑,以实现更复杂的XML数据处理。

    Android中使用pull解析器操作xml文件的解决办法

    在Android开发中,处理XML数据是一项常见的任务,而Android提供了内置的Pull解析器来高效地读取和生成XML文件。本文将详细介绍如何使用Pull解析器来操作XML。 首先,我们来理解什么是Pull解析器。Pull解析器是一种...

    使用Android自带的XML解析器PULL解析器简单的解析xml

    Android系统提供了一种轻量级的XML解析方式——PULL解析器(Pull Parser),它适用于处理大型XML文档,因为它不需要像DOM解析器那样一次性加载整个XML文档到内存中。PULL解析器通过事件驱动的方式,按需解析XML文档...

    android Pull XML文件解析 存取 代码程序

    本篇文章将深入探讨如何在Android中使用Pull解析器进行XML文件的解析和存取。 一、XML解析器简介 在Android中,有两种主要的XML解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。SAX是事件驱动...

    Android 生成和PULL解析xml

    本文将深入探讨如何在Android中生成XML文件以及如何使用PULL解析器来解析XML数据。 首先,我们来看一下如何在Android中生成XML文件。生成XML文件通常涉及创建一个XMLWriter对象,然后通过调用其方法来添加元素、...

    pull解析xml文件

    pull解析xml文件

    Android 封装pull解析xml

    以下是一些关于封装Pull解析XML的关键知识点: 1. **创建XMLPullParser实例**: Android系统提供了`XmlPullParserFactory`类,通过`newInstance()`方法创建XMLPullParser的工厂对象,然后使用`newPullParser()`...

    Android利用pull生成xml文件

    "Android利用Pull生成XML文件"这一主题涉及到的是如何使用Android的Pull解析器来读取和生成XML内容。Pull解析器是一种轻量级、低级别的解析机制,与DOM(文档对象模型)和SAX(简单API for XML)解析器相比,它更...

Global site tag (gtag.js) - Google Analytics