`

android xml解析

 
阅读更多

package com.anjoyo.cnblogs.parse;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import android.util.Log;

import com.anjoyo.cnblogs.bean.News;

public class ParseNews extends DefaultHandler{
 private List<News> newsList = null;
 private News news = null;
 private String preTag = null;
 private boolean isNews = false;
 
 public List<News> getNewsList(String data) {
  SAXParserFactory factory = SAXParserFactory.newInstance();
  SAXParser parser = null;
  try {
   parser = factory.newSAXParser();
   parser.parse(data, this);
  } catch (ParserConfigurationException e) {
   e.printStackTrace();
  } catch (SAXException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  Log.i("Tag", newsList.size() + "");
  return this.getNewsList();
 }
 
 public List<News> getNewsList() {
  return this.newsList;
 }
 
 public void startDocument() throws SAXException {
  super.startDocument();
  newsList = new ArrayList<News>();
 }
 
 public void startElement(String uri, String localName, String qName,
   Attributes attributes) throws SAXException {
  super.startElement(uri, localName, qName, attributes);
  if(qName != null && qName.equals("entry")) {
   news = new News();
   isNews = true;
  }
  preTag = qName;
 }
 
 public void characters(char[] ch, int start, int length)
   throws SAXException {
  super.characters(ch, start, length);
  String content = new String(ch,start,length);
  Log.i("Tag", preTag);
  if(preTag != null && isNews) {
   if("id".equals(preTag)) {
    news.setId(content);
   }else if("title".equals(preTag)) {
    Log.i("Tag", content);
    news.setTitle(content);
   }else if("summary".equals(preTag)) {
    Log.i("Tag", content);
    news.setSummary(content);
   }else if("published".equals(preTag)) {
    news.setTime(content);
   }else if("views".equals(preTag)) {
    news.setViewNum(Integer.parseInt(content));
   }else if("comments".equals(preTag)) {
    news.setCommentNum(Integer.parseInt(content));
   }else if("sourceName".equals(preTag)) {
    news.setSource(content);
   }
  }
 }
 
 public void endElement(String uri, String localName, String qName)
   throws SAXException {
  super.endElement(uri, localName, qName);
  if(qName != null && qName.equals("entry")) {
   newsList.add(news);
   news = null;
   isNews = false;
  }
  preTag = null;
 }
 
 public void endDocument() throws SAXException {
  super.endDocument();
 }
}

分享到:
评论

相关推荐

    Android xml 解析工具类

    Android XML 解析工具类 Android XML 解析工具类是一个功能强大且实用的工具类,提供了多种方法来解析 XML 文档。该工具类提供了四种方法来获取 XML 节点的内容,分别是 getMarkString、getMarkString、...

    六,Android Xml解析

    XML解析是将XML文档转换为Java对象的过程,这对于Android应用程序的资源配置、布局定义以及数据交换至关重要。这篇博文将深入探讨Android中的XML解析机制,包括DOM、SAX和Pull解析器三种主要方法。 首先,我们来看...

    Android XML 解析笔记

    Android支持多种XML解析技术,包括DOM、SAX和Pull解析。每种方法都有其特定的优势和应用场景。 #### DOM解析XML DOM(Document Object Model)解析是一种将整个XML文档加载到内存中,并构建出一棵树状结构(称为DOM...

    Android XML 解析 写入

    本篇将详细探讨Android中的XML解析,特别是PULL解析方式,并讲解如何进行XML的写入操作。 ### 1. Android XML解析概述 XML解析器分为两种主要类型:DOM(Document Object Model)和PULL(Pull Parser)。DOM解析器...

    Android XML解析(DOM、PULL、SAX三种方式)

    Android系统提供了三种主要的XML解析方式:DOM(Document Object Model)、PULL(Pull Parser)和SAX(Simple API for XML)。每种方法都有其独特的特性和应用场景,下面将详细介绍这三种XML解析方式。 1. DOM解析...

    Android XML解析源码

    解析安卓的strings xml colors xml dimens xml等 共4个方法 String[] getStringArray InputStream String String getString InputStream String String getColor InputStream String String getDimens ...

    android XML解析源码

    本篇文章将深入探讨Android系统中的XML解析源码,包括DOM、SAX和Pull解析器的工作原理。 一、XML解析方式 1. DOM解析:Document Object Model(DOM)解析器将整个XML文档加载到内存中,形成一个树形结构,称为DOM...

    android xml pull解析示例

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

    android XMl 解析神奇xstream 一

    在Android 10中,XML解析相关的优化和更新包括对XML解析器性能的改进,以及对Android Jetpack库的更新,这些库可能包含了对XStream或其他XML解析库的依赖。 总的来说,XStream作为一个强大的XML解析工具,为Android...

    Android XML解析

    本文将深入探讨Android系统中的XML解析技术,包括DOM(Document Object Model)、SAX(Simple API for XML)和PullParser解析方式,并结合提供的资源进行详细说明。 **DOM解析** DOM解析器会将整个XML文档加载到...

    android下解析xml文件的demo

    在Android应用中,我们通常使用两种方式来解析XML:DOM(Document Object Model)解析器和SAX(Simple API for XML)解析器。 1. DOM解析: DOM解析器将整个XML文件加载到内存中,形成一个树形结构,可以方便地遍历...

    android xml解析1

    在JAVA中有两种常见的XML解析方式,DOM和SAX,DOM在解析的时候会将所有的数据一次性载入内存中进行解析,在数据量比较大的情况下,效率非常低.尤其在手机这种对内存和性能要求比较苛刻的设备里面这种方法并不可取. ...

    android xml多种解析生成

    Android XML 多种解析生成 Android 平台中,XML 文件解析和生成是非常重要的一部分。XML 文件可以存储和交换结构化数据,广泛应用于 Android 应用程序中。本文将介绍 Android 中使用多种解析和生成 XML 文件的方法...

    android XML三种解析及生成

    本文将深入探讨Android中的三种XML解析方式:SAX(Simple API for XML)、Pull Parser和DOM(Document Object Model),以及如何生成XML文件。 ### 1. SAX解析 SAX解析器是基于事件驱动的解析模型,它逐行读取XML...

    Android XML解析之SAX解析

    在Android中,有多种解析XML的方法,如DOM、SAX和Pull解析器。本篇主要讨论的是SAX解析,这是一种基于事件驱动的、高效的解析方式,适合处理大体积的XML文件。 SAX解析器逐行读取XML文档,当遇到开始标签、结束标签...

    android xml文件解析 SAX

    SAX是一种事件驱动的XML解析器,它不会像DOM解析器那样将整个XML文档加载到内存中,而是逐行读取,遇到每个元素或属性时触发相应的事件回调。这种方式节省了内存,特别适合处理大型XML文件。 1. **SAX解析的基本...

    Android解析XML文件

    本例使用多种方式获取本地XML文件,还有通过url获取XML文件,使用Android内置的PULL解析器对XML文件进行解析,例子是解析我国各个省市。 《Android解析XML文件》博文路径:...

    android XML解析的三种方法源代码

    本教程将深入探讨Android中的三种主要XML解析方法:SAX(Simple API for XML)、Pull解析器以及DOM(Document Object Model),并提供源代码示例。 1. SAX解析: SAX是一种事件驱动的解析器,它不会将整个XML文档...

    androidXML解析实例代码

    总结起来,Android中的XML解析是一个重要的任务,SAX解析器提供了一种高效且节省内存的方式处理XML数据。通过创建一个事件处理器并重写其方法,我们可以根据需要定制解析过程,轻松地提取XML文件中的标签和数据。在...

Global site tag (gtag.js) - Google Analytics