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

android SAX parse xml

 
阅读更多
<?xml version="1.0" encoding="utf-8"?> 
<products> 
    <product> 
        <id>10</id> 
        <name>电脑</name> 
        <price>2067.25</price> 
    </product> 
    <product> 
        <id>20</id> 
        <name>微波炉</name> 
        <price>520</price> 
    </product> 
</products>


public class Product 
{ 
    private int id; 
    private String name; 
    private float price; 
} 


解析的主要代码

import java.util.ArrayList;
import java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class XML2Product extends DefaultHandler {
	private List<Product> products; // 该变量用于保存转换后的结果
	private Product product;
	private StringBuffer buffer = new StringBuffer();

	public List<Product> getProducts() {
		return products;
	}

	@Override
	public void characters(char[] ch, int start, int length) throws SAXException {
		buffer.append(ch, start, length);
		super.characters(ch, start, length);
	}

	@Override
	public void endElement(String uri, String localName, String qName) throws SAXException {
		// 遇到<product>结点后将在startElement方法中创建的Product对象添加到List对象(products)中
		if (localName.equals("product")) {
			products.add(product);
		}
		// 遇到<id>结点后将结点值赋给 Product.id 属性
		else if (localName.equals("id")) {
			product.setId(Integer.parseInt(buffer.toString().trim()));
			buffer.setLength(0); // 必须清空缓冲区
		}
		// 遇到<name>结点后将结点值赋给 Product.name 属性
		else if (localName.equals("name")) {
			product.setName(buffer.toString().trim());
			buffer.setLength(0);
		}
		// 遇到<price>结点后将结点值赋给 Product.price 属性
		else if (localName.equals("price")) {
			product.setPrice(Float.parseFloat(buffer.toString().trim()));
			buffer.setLength(0);
		}
		super.endElement(uri, localName, qName);
	}

	@Override
	public void startDocument() throws SAXException {
		products = new ArrayList<Product>();
	}

	@Override
	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
		// 当遇到<product>结点时创建 Product 对象
		if (localName.equals("product")) {
			product = new Product();
		}
		super.startElement(uri, localName, qName, attributes);
	}
} 
分享到:
评论

相关推荐

    android sax解析xml模板源码下载

    本示例"android sax解析xml模板源码"提供了一个使用SAX解析XML的实例,方便开发者直接导入到自己的项目中使用。 SAX解析XML的基本流程如下: 1. **创建解析器**:在Android中,我们需要使用`SAXParserFactory`来...

    xml.rar_android_android sax_android sax xml_java xml_sax

    本资料包“xml.rar”主要关注Android环境下的XML解析,特别是SAX解析器,同时也涵盖了DOM和Pull解析方式。 1. XML基本概念: XML是一种自描述性的标记语言,它通过标签来定义数据结构。每个XML文档都包含元素、...

    Android SAX 解析XML

    1. 引入库:在Android项目中,SAX解析器已经内置于`org.xml.sax`包中,无需额外导入库。 2. 创建事件处理器:你需要创建一个类来实现`DefaultHandler`接口。这个类将包含对解析事件的响应方法,如`startElement`、`...

    android sax解析xml

    本篇将详细讲解如何在Android环境中使用SAX解析XML。 1. **SAX解析的基本原理** SAX解析器读取XML文档时,遇到每个元素、属性、文本等都会触发相应的事件,开发者需要注册事件处理器来处理这些事件。这种方式适合...

    android_sax_xml.zip_android_android sax

    public void parseXML(String xmlFilePath) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); MySAXHandler handler = new MySAXHandler(); ...

    android sax解析xml文件

    在这个例子中,`parseXml()`方法接收XML文件路径作为参数,创建`SAXParser`并进行解析。`SaxExample`类实现了`DefaultHandler`接口,重写了处理元素开始、结束和内容的方法。在实际应用中,你需要根据XML文件的具体...

    android SAX解析String类型 XML 字符串

    在Android中,我们可以使用`DefaultHandler`作为SAX解析器的基类,创建一个继承自`DefaultHandler`的自定义处理器类,然后重写其中的方法,如`startElement`、`endElement`和`characters`,来处理XML中的元素和内容...

    Android之SAX解析XML

    本文将深入探讨如何在Android环境中使用SAX(Simple API for XML)解析XML文件。SAX是一种事件驱动的解析器,它在读取XML文档时触发一系列事件,开发者可以注册事件处理器来处理这些事件,从而实现对XML数据的高效、...

    Android SAX、DOM、Pull解析xml文件案例讲解

    本篇将详细讲解Android中三种主要的XML解析方式:SAX(Simple API for XML)、DOM(Document Object Model)和Pull解析器,并通过案例来帮助理解它们的工作原理和应用场景。 ### 1. SAX解析器 SAX(Simple API for...

    android sax 解析xml

    本文将详细介绍如何在Android中使用SAX解析XML。 首先,理解SAX解析的基本原理。SAX解析器在读取XML文档时,会触发一系列的事件,例如开始文档、结束文档、开始元素、结束元素等。开发者需要创建一个实现了`...

    android使用SAX解析xml

    本篇文章将详细介绍如何在Android环境中使用SAX解析器来处理从网络获取的XML文件。 1. **XML与SAX解析基础** - XML是一种结构化的文本数据表示方式,它定义了标签、属性等规则,使数据具有自解释性。 - SAX解析器...

    android SAX解析XML.docx

    urn this.mp3Name;...总之,Android中使用SAX解析XML是一种高效且节省内存的方式,特别适合处理大型XML文件。通过编写自定义的ContentHandler,开发者可以灵活地控制解析过程,实现对XML数据的定制化处理。

    [Android]使用SAX解析XML文件

    总结,SAX解析XML在Android开发中是一个实用且高效的解决方案,尤其适用于处理大型XML文件。通过创建自定义的事件处理器,可以灵活地解析和处理XML数据,满足各种业务需求。不过,需要注意的是,由于SAX是基于事件的...

    【下载】Android 使用SAX实现XML的读和写,使用XML与后台交互

    本文将深入探讨如何在Android平台上利用SAX(Simple API for XML)解析器来读取和写入XML数据,以及如何利用XML进行后台交互。 SAX是一种事件驱动的XML解析方式,与DOM(Document Object Model)不同,它不需要一次...

    android 实用sax 读取xml文件内容 附

    在`parseXmlFile`方法中,我们首先创建了`SAXParserFactory`实例,然后通过它创建`SAXParser`。接着,我们实例化之前定义的事件处理器,并使用`parser.parse()`方法开始解析XML文件。 在实际应用中,我们还需要考虑...

    android sax xml解析demo

    在`parseXml`方法中,我们传递XML文件路径和我们自定义的处理器,解析器会自动调用处理器的回调方法来处理XML内容。 总之,SAX解析是Android开发中处理XML数据的一种高效方法,尤其适合大文件解析。通过自定义事件...

    android使用SAX解析XML

    下面我们将详细讨论如何在Android中使用SAX解析XML。 首先,我们需要了解SAX解析的基本原理。SAX解析器在读取XML文档时,会触发一系列的事件,如开始文档、开始元素、结束元素、字符数据等。开发者需要定义一个...

    Sax解析xml文件

    在Android和Java编程中,处理XML文件是常见的任务,而SAX(Simple API for XML)是一种轻量级、事件驱动的XML解析器,它以流式方式读取XML文档,只在需要时解析内容,因此非常适合处理大体积的XML文件。 SAX解析器...

    android 以SAX方式解析xml

    本文将详细介绍如何在Android中使用SAX方式解析XML。 **SAX解析器的工作原理** SAX解析器读取XML文件时,遇到每个元素、属性、文本等都会触发相应的事件,开发者需要通过实现ContentHandler接口来处理这些事件。...

    android 使用sax解析XML

    本教程将详细讲解如何在Android中使用SAX解析XML。 首先,要使用SAX解析XML,我们需要理解其工作原理。SAX解析器会逐个读取XML文档的元素,每当遇到文档的开始、结束、文本等事件时,就会触发相应的回调方法。...

Global site tag (gtag.js) - Google Analytics