`
shenjichao2009
  • 浏览: 96359 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android中对XML文件的解析

阅读更多

ContentHandler.java:负责对XML进行处理

/**
 *
 */
package com.duoguo.content;

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

/**
 * @author shyboy(
897948924@qq.com)
 *
 */
public class ContentHandler extends DefaultHandler {

 private String tagName;
 private String name;
 private String sex;
 private int age;

 // 解析XML文档开始部分
 @Override
 public void startDocument() throws SAXException {

  System.out.println("start document");

 }

 // 解析XML文件结束部分
 @Override
 public void endDocument() throws SAXException {

  System.out.println("end document");

 }

 // 解析XML文件元素开始部分
 @Override
 public void startElement(String uri, String localName, String qName,
   Attributes attributes) throws SAXException {

  // System.out.println("start element");

  tagName = localName;

  if ("user".equals(localName)) {
   for (int i = 0; i < attributes.getLength(); i++)// 遍历元素的属性
   {
    System.out.println(attributes.getLocalName(i) + "="
      + attributes.getValue(i));
   }
  }

 }

 // 解析XML文件元素结束部分
 @Override
 public void endElement(String uri, String localName, String qName)
   throws SAXException {

  // System.out.println("end element");
  if ("user".equals(localName)) {
   printout();
  }

 }

 // 解析XML文件的元素内容
 @Override
 public void characters(char[] ch, int start, int length)
   throws SAXException {

  // System.out.println("characters");

  if ("name".equals(tagName))// 当解析name元素的内容时
  {
   name = new String(ch, start, length);// 获取name元素的内容
  } else if ("sex".equals(tagName))// 当解析sex元素的内容时
  {
   sex = new String(ch, start, length);// 获取sex元素的内容
  } else if ("age".equals(tagName))// 当解析age元素的内容时
  {
   age = new Integer(new String(ch, start, length));// 获取age元素的内容
  }

 }

 // 打印解析的XML文件的内容
 public void printout() {

  System.out.println("name:" + name);
  System.out.println("sex:" + sex);
  System.out.println("age:" + age);

 }

}

 

XmlActivity.java

package com.duoguo.android;

import java.io.IOException;
import java.io.StringReader;

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

import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;

import com.duoguo.content.ContentHandler;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

/**
 * 解析XML文件
 *
 * @author shyboy(
897948924@qq.com)
 *
 */
public class XmlActivity extends Activity {

 // 声明Button控件
 private Button parseXMLButton;

 @Override
 public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  parseXMLButton = (Button) findViewById(R.id.parseXMLId);// 根据空间的ID获取Button空间
  parseXMLButton.setOnClickListener(new ParseXMLButtonClick());// 为Button控件添加单击事件监听器

 }

 // 解析XML文件事件监听器
 class ParseXMLButtonClick implements OnClickListener {

  @Override
  public void onClick(View v) {

   System.out.println("click");

   String xml = "<users><user id='001'><name>shyboy</name><sex>male</sex><age>24</age></user><user id='002'><name>playboy</name><sex>female</sex><age>20</age></user></users>";

   SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();// 实例化SAXParserFactory对象
   try {

    XMLReader xmlReader = saxParserFactory.newSAXParser()
      .getXMLReader();// 获取XMLReader对象
    xmlReader.setContentHandler(new ContentHandler());// 注册内容事件处理器
    xmlReader.parse(new InputSource(new StringReader(xml)));// 开始解析XML

   } catch (SAXException e) {

    e.printStackTrace();
    Log.d("debug", e.getMessage());

   } catch (ParserConfigurationException e) {

    e.printStackTrace();
    Log.d("debug", e.getMessage());

   } catch (IOException e) {

    e.printStackTrace();
    Log.d("debug", e.getMessage());
   }

  }

 }

}

  • Xml.zip (49.1 KB)
  • 描述: 源码
  • 下载次数: 1
分享到:
评论

相关推荐

    android下解析xml文件的demo

    DOM解析器将整个XML文件加载到内存中,形成一个树形结构,可以方便地遍历和修改XML文档的任何部分。然而,由于它需要一次性加载整个文件,对于大文件来说可能会消耗大量内存。 在"ReadXMLDemo"中,使用DOM解析的...

    android xml pull解析示例

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

    在android中使用pull解析xml文件

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

    android中xml文件的解析.doc

    理解如何解析XML文件是至关重要的,本节将深入探讨Android中的三种XML解析方法:SAX、DOM和Pull解析。 **SAX解析** SAX(Simple API for XML)是一种基于事件驱动的解析方式,它不加载整个XML文档到内存,而是逐行...

    android 解析XML文件 生成XML文件

    在Android开发中,XML文件广泛用于存储数据、配置文件以及应用程序间的数据交换。本文将深入探讨如何使用SAX、DOM和Pull解析器解析XML文件,以及如何生成XML文件。我们将同时展示Java和Kotlin两种语言的实现方法。 ...

    android的xml文件的解析

    在Android开发中,XML文件广泛用于布局设计、配置设置、数据存储等方面,因此理解XML文件的解析至关重要。本文将深入探讨两种主要的XML解析方法:DOM解析和SAX解析。 一、XML概述 XML(eXtensible Markup Language...

    Android Dom解析XML

    在Android中,我们通常使用`javax.xml.parsers.DocumentBuilderFactory`来创建解析器,并通过`DocumentBuilder`实例解析XML文件。下面是一个简单的示例: ```java DocumentBuilderFactory factory = ...

    android Dom解析xml文件

    本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的基本概念 DOM解析是一种将XML文件转换为内存中对象模型的方法。它将XML文档视为一棵树,其中每个元素、...

    Android中XML数据解析

    首先,DOM(Document Object Model)解析器将整个XML文档加载到内存中,形成一个树形结构,然后可以遍历这个结构来访问和修改XML数据。优点是操作灵活,但缺点是如果XML文件较大,可能导致内存消耗过高。在Android中...

    Android 解析xml文件

    1. **DOM解析器**:Document Object Model(DOM)解析器将整个XML文件加载到内存中,形成一个树形结构,便于对整个文档进行遍历。但是,对于大型XML文件,DOM解析器可能会消耗大量内存。 2. **SAX解析器**:Simple ...

    Android开发之XML文件解析的使用

    在Android开发中,XML文件解析是一项重要的技能,用于读取和操作XML数据。XML(Extensible Markup Language)是一种结构化数据格式,常用于存储和传输数据。本篇文章将重点讲解如何在Android中使用SAX(Simple API ...

    android xml多种解析生成

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

    android xml文件解析 SAX

    在Android开发中,XML文件广泛用于存储数据和配置信息,如布局、字符串资源、颜色等。解析XML文件是Android开发者必须掌握的一项技能。本篇将详细介绍Android中的SAX(Simple API for XML)解析方式。 SAX是一种...

    Android解析XML文件

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

    老罗Android视频开发教程 android解析xml文件代码

    通过老罗的Android视频教程,开发者可以学习到如何有效地解析XML文件,提升在Android开发中的数据处理能力。不论是DOM、SAX还是Pull解析,每种方法都有其适用场景,理解并熟练掌握这些技术,将对Android应用开发...

    android XML本地解析实例

    XML本地解析是Android应用中处理XML文件的重要环节,它可以让你读取、理解和操作XML文档中的数据。本教程将深入探讨Android XML本地解析的实例。 一、XML解析方式 1. DOM解析:Document Object Model(DOM)解析器...

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

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

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

    如果XML文件较小,结构复杂,或者需要频繁解析,PULL可能是更好的选择;反之,如果文件大且结构简单,SAX的效率和内存效率优势就显现出来。 为了更好地理解这两种解析方式,可以参考提供的博客文章...

    六,Android Xml解析

    4. **资源文件**:例如字符串资源、颜色资源、尺寸资源等,都在values目录下的XML文件中定义,Android系统在运行时会自动解析。 5. **网络数据交换**:XML常用于服务器与客户端之间的数据交换,通过HTTP或FTP等方式...

Global site tag (gtag.js) - Google Analytics