java中提供了一系列的接口用于自定义解析xml的文件,中DefaultHandler是SAX事件处理程序的基类,通过重写SAX类,可以自定义对xml文件的解析。
在重写defaultHandler类时候,有一个重点是设立tag标记位,这个标记为用于记录当前处理的元素是哪一个,因为xml解析是一个嵌套的结构,character中可能还会调用startElement,因此必须设立一个标记位teg用于标记当前startElement解析到哪个标签了,然后character才能根据不同的tag定义不同的方法。
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.*;
import java.io.*;
import java.util.*;
import javax.xml.parsers.*;
import java.io.*;
class Book
{
private String id;
private String name;
private String price;
public void setId(String id)
{
this.id=id;
}
public void setName(String name)
{
this.name=name;
}
public void setPrice(String price)
{
this.price=price;
}
public String toString()
{
return id+":"+name+":"+price;
}
}
class SaxParseService extends DefaultHandler
{
private ArrayList<Book> books;
private Book book;
private String tag;
public void startDocument() throws SAXException
{
System.out.println("开始解析");
books=new ArrayList<Book>();
}
public void startElement(String uri,String localName,String pName,Attributes attrs) throws SAXException
{
if("book".equals(pName))
{
book=new Book();
book.setId(attrs.getValue(0));
}
tag=pName;
}
public void characters(char [] ch ,int start ,int length )
{
if(tag!=null)
{
if("name".equals(tag))
{
book.setName(new String(ch,start,length));
}
else if("price".equals(tag))
{
book.setPrice(new String(ch,start,length));
}
}
}
public void endElement(String uri,String localName,String pName) throws SAXException
{
if("book".equals(pName))
{
books.add(book);
book=null;
}
tag=null;
}
public void endDocument() throws SAXException
{
System.out.println("结束解析");
}
public ArrayList<Book> getBooks()
{
return books;
}
}
public class Demo
{
public static void main(String [] args) throws Exception
{
SAXParserFactory sax=SAXParserFactory.newInstance();
SAXParser parser=sax.newSAXParser();
SaxParseService handle=new SaxParseService();
InputSource input=new InputSource(new FileInputStream("book.xml"));
parser.parse(input,handle);
ArrayList<Book> books=handle.getBooks();
for(Book book:books)
{
System.out.println(book);
}
}
}
附件是book.xml
分享到:
相关推荐
SAX的jar包 SAX的jar包SAX的jar包 SAX的jar包 SAX的jar包
DOM(Document Object Model)解析和SAX(Simple API for XML)解析是两种常见的XML文档解析方式,它们在处理XML数据时有不同的策略和优缺点。 DOM解析是一种基于树型结构的XML解析方法。当一个XML文档被DOM解析器...
DOM(Document Object Model)和SAX(Simple API for XML)是两种主要的XML解析方法。在Java编程中,dom4j库提供了对这两种解析方式的支持。 **DOM解析**: DOM解析器将整个XML文档加载到内存中,创建一个树形结构...
SAX(Simple API for XML)是一种基于事件驱动的XML解析方式,它在网络编程中扮演着重要角色,特别是在处理大型XML文档时,由于其高效、内存占用小的特点,被广泛采用。本文将深入探讨SAX解析在网络编程中的应用及其...
在处理大型XML文档时,SAX(Simple API for XML)解析器是一种高效的流式解析方法,它不会一次性加载整个XML文档到内存,而是逐个事件地处理XML元素,从而节省资源。 SAX解析XML的基本概念: 1. 事件驱动:SAX解析...
SAX解析是一种流式的XML解析方式,它使用了一种基于事件的模型来处理XML文档。开发者不需要在内存中构建整个文档的树形结构,而是通过响应XML解析器发出的事件来处理XML文档。这种方式特别适合处理大型的XML文件,...
为了解决这个问题,Apache POI 提供了SAX解析器,它是一种基于事件驱动的解析方式,可以有效地处理大型Excel文件。 SAX(Simple API for XML)解析方式与DOM不同,它不会一次性加载整个文件到内存,而是逐行读取,...
SAX(Simple API for XML)是XML解析器的一种,它采用事件驱动的方式对XML文档进行解析,而不是一次性加载整个文档到内存中,因此在处理大型XML文件时,SAX解析器具有较高的性能和较低的内存消耗。 标题“sax解析...
Java中的SAX解析方案是一种高效的XML处理方法,尤其适用于大体积的XML文件。SAX(Simple API for XML)是基于事件驱动的解析器,它不会像DOM解析那样将整个XML文档加载到内存中,而是逐行读取并触发相应的事件处理器...
SAX(Simple API for XML)是一种轻量级的解析XML数据的方法,相比于DOM解析,它更节省内存,更适合处理大型XML文件。SAX是事件驱动的解析器,它读取XML文档并触发一系列的事件,如开始文档、开始元素、字符数据等,...
常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. DOM 解析器 DOM(Document Object Model)是 W3C 官方标准,用于表示...
SAX(Simple API for XML)是一种轻量级的解析XML的API,它是Java平台上的一个标准接口,用于处理XML文档。SAX9.0是该API的一个特定版本,提供了更高效、更灵活的XML解析能力。这个版本可能包含了对XML 1.0和1.1规范...
### 西门子执行器SAX61.03关键知识点解析 #### 一、产品概览 **西门子SAX61.03**是西门子楼宇科技系列中的一款电动阀门执行器,主要应用于暖通空调系统的控制与安全切断。这款执行器能够直接安装在阀门上,并且具有...
本案例主要涉及的是一个天气预报接口,该接口返回的数据格式为XML,我们使用SAX(Simple API for XML)进行解析。接下来,我们将深入探讨天气预报接口、SAX解析以及如何处理XML数据。 首先,天气预报接口是一个API...
SAX(Simple API for XML)是XML解析的一种方法,它以事件驱动的方式处理XML文档,非常适合处理大体积的XML文件,因为它不需要一次性加载整个文件到内存,而是逐行读取,因此节省了资源。 **SAX解析XML的基本原理:...
SAX(Simple API for XML)是一种轻量级的XML解析技术,主要用于读取XML文档。相较于DOM(Document Object Model)解析器,SAX解析器占用更少的内存和处理时间,因为它不会一次性加载整个XML文档到内存,而是采用...
在Android开发中,处理XML数据时,我们常常会遇到两种主要的解析方式:DOM(Document Object Model)和SAX(Simple API for XML)。本篇主要探讨的是SAX解析XML的源码实现。 SAX解析器是一种事件驱动的解析器,它...
本文将深入探讨如何在Android环境中使用SAX(Simple API for XML)解析XML文件。SAX是一种事件驱动的解析器,它在读取XML文档时触发一系列事件,开发者可以注册事件处理器来处理这些事件,从而实现对XML数据的高效、...
SAX(Simple API for XML)是一种事件驱动的解析器,适用于处理大型XML文档,因为它不需要将整个文档加载到内存中,而是逐行读取,从而节省资源。本篇文章将详细介绍如何在Android环境中使用SAX解析器来处理从网络...
Java中的SAX(Simple API for XML)是一种轻量级的解析器,用于处理XML文档。它以事件驱动的方式工作,当解析器遇到XML文档的各个部分时,会触发相应的事件,如开始文档、结束文档、开始元素、结束元素等。这种方法...