`
junli0411
  • 浏览: 139200 次
  • 来自: ...
社区版块
存档分类
最新评论

Java读取XML文件之SAX篇

阅读更多
在XMLReader接受XML文档,并对读入的xml文件进行解析,解析开始之前,需要向XMLReader注册一个ContentHandler,也 就是相当于一个事件监听器,在ContentHandler中定义了很多方法,当XMLReader读到合适的内容,就会抛出相应的事件,并把这个事件的 处理权代理给ContentHandler,调用其相应的方法进行响应。

ContentHandler是一个接口,当处理特定的XML文件 的时候,需要为其创建实现了此接口的类来处理特定的事件。而org.xml.sax.helpers.DefaultHandler类实现了此接口,所以 我们只要继承DefaultHandler,并覆盖其中的方法即可。具体常用的几个方法在下面程序中有详细注释:


package xml;


import java.io.FileReader;
import java.io.IOException;

import javax.xml.parsers.ParserConfigurationException;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;;

public class SaxTest extends DefaultHandler{

 public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
  
  XMLReader xr=XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
  xr.setContentHandler(new SaxTest());
  xr.parse(new InputSource(new FileReader("test.xml")));
 }

//在文档开始的时候调用此方法
 public void startDocument() throws SAXException {
  
  System.out.println("startDocument: ");
 
 }
 //在文档结束的时候调用此方法
 public void endDocument() throws SAXException {
  
  System.out.println("enddocument: ");
 }

//在遇到开始标签时调用此方法,

//其中参数中的namespaceURI就是名域,localName是标签名,qName是标签的修饰前缀,当没有使用名域的时候,这两个参数都未null。而atts是这个标签所包含的属性列表。通过atts,可以得到所有的属性名和相应的值

 public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
  
  System.out.println("startElement: "+localName);

 }

//遇到结束标签时调用此方法

 public void endElement(String uri, String localName, String qName) throws SAXException {
  
  System.out.println("endElement: "+localName);
 }

//当遇到标签中的字符串时,调用这个方法,它的参数是一个字符数组,以及读到的这个字符串在这个数组中的起始位置和长度

 public void characters(char[] ch, int start, int length) throws SAXException {
  
  String data=new String(ch,start,length);
  System.out.println(data);
 
 }
}

当我们创建如下test.xml文件时

test.xml

-------------------

<?xml version="1.0"?>
<School>
 <Student>
  <ID>123456</ID>
  <Address>408</Address>
  <Name>wxm</Name>
  <Sex>male</Sex>
 </Student>
</School>

-------------------

运行程序,输出结果如下:

startDocument:
startElement: School

 
startElement: Student

  
startElement: ID
123456
endElement: ID

  
startElement: Address
408
endElement: Address

  
startElement: Name
wxm
endElement: Name

  
startElement: Sex
male
endElement: Sex

 
endElement: Student


endElement: School
enddocument:

----------------

END! 

分享到:
评论
2 楼 lct456 2008-02-19  
感谢,我总算运行成功了
1 楼 lct456 2008-02-19  
感谢,我总算运行成功了

相关推荐

    用java读取xml文件的四种方法

    要读取XML文件,Java提供了多种方法。以下是四种常用的方法,每种都有其适用场景和特点: 1. **DOM解析器(Document Object Model)** DOM解析器将整个XML文件加载到内存中,创建一个树形结构,允许我们通过节点...

    用java读取修改xml文件的代码实现

    本文将详细介绍如何使用Java来读取和修改XML文件,主要涉及以下几个核心知识点: 1. **DOM解析器**: Document Object Model(DOM)是一种将XML文档转换为内存中的树形结构的方法,使得可以遍历和修改XML文件。...

    java读取xml文件

    Java 读取 XML 文件是 Java 开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储等领域。本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 ...

    Java解析XML文档(二):sax读取xml文件导出excel

    SAX解析器在读取XML文档时,会触发一系列的事件,如开始文档、结束文档、开始元素、结束元素等。开发者需要定义一个ContentHandler类来处理这些事件,当解析器遇到相应的XML元素时,就会调用ContentHandler中的方法...

    java读写xml文件

    ### Java读写XML文件知识点详解 #### 一、概述 在Java编程中,对XML文件进行读取与写入是一项非常常见的任务。XML(可扩展标记语言)是一种用于标记数据的语言,非常适合用来存储和传输数据。Java提供了多种API来...

    XML-java.rar_XML SAX_sax_sax xml_sax 解析 xml_xml using dom

    3. **JDOM**:JDOM是一个Java API,专门用于读写XML文档。它提供了一个更面向Java的对象模型,使得XML处理更加直观。JDOM在DOM的基础上进行了优化,减少了内存消耗,同时保持了易用性。 4. **JOM4J**:JOM4J(也...

    Java SAX解析Xml文档Demo

    Java SAX(Simple API for XML)解析器是一种基于事件驱动的XML解析方式,它不将整个XML文档加载到内存中,而是逐行读取,当遇到某个事件(如开始标签、结束标签等)时,会触发相应的事件处理器方法。这种方式节省了...

    Java与XML读写之DOM篇

    下面将详细阐述DOM模型、解析过程以及如何在Java中使用DOM进行XML读写。 DOM模型的核心概念是节点(Node)。XML文档的每个部分——元素(Element)、属性(Attribute)、文本(Text)等都被表示为一个节点对象。DOM...

    Java中XML配置文件的读取(sax).doc

    Java中XML配置文件的读取(SAX) XML配置文件是Java开发中常用的配置文件格式,特别是在J2EE项目中。XML文件可以存储配置信息,并且易于维护和修改。然而,在Java中读取XML配置文件成了一个需要解决的问题。本文将...

    java写XML文件和读取XML文件

    二、Java读取XML文件 1. 使用DOM解析: 读取XML文件时,首先会将整个XML文档加载到内存中的DOM树,然后通过API遍历和访问各个节点。 示例代码: ```java import javax.xml.parsers.DocumentBuilder; import javax....

    Java读写xml java 读写xml文件操作, 简单易懂

    Java提供了多种读写XML文件的方法,包括SAX、DOM、StAX以及JAXB等。本文将基于提供的文件信息,深入探讨如何利用Java进行XML文件的读取与写入,重点介绍DOM(Document Object Model)方式的操作。 #### DOM解析XML...

    使用Java读取XML配置文件

    使用 Java 读取 XML 配置文件 Java 语言和 XML 技术可以说是黄金组合,网上已经有很多文章介绍 ...使用 XML 作为 Java 程序的配置文件可以提高系统的灵活性和可维护性,而使用 SAX 解析器可以高效地读取 XML 文件。

    java用sax实现重写xml文件内容

    在Java中,SAX解析器不直接支持修改XML文件,但我们可以使用一种间接的方法来实现这一目标:先读取XML文件,然后在内存中构建一个新的XML结构,再将这个新结构写回文件。下面是一个简化的步骤: 1. **创建SAX解析器...

    java中读写XML文件

    在Java编程语言中,XML(eXtensible Markup Language)是一种重要的数据交换格式,用于存储和...在提供的"在java中读写XML文件.ppt"和"源码"中,可能包含了更多详细的步骤和示例代码,可以帮助你进一步理解这个主题。

    Java与XML联合编程之SAX篇

    ### Java与XML联合编程之SAX篇 #### SAX概述 SAX(Simple API for XML)是一种用于解析XML文档的技术,虽然并非由W3C官方发布,但在实际应用中被广泛采纳,成为了一种非正式的标准。SAX适用于文档非常大的情况,...

    Java读取xml文件的四种方法.doc

    在 Java 中读取 XML 文件有多种方法,本文将介绍四种常见的方法,分别使用 DOM、DOM4J、JDOM 和 SAX 解析器。 第一种方法:使用 DOM DOM(Document Object Model)是一种树形结构,用于表示 XML 文档。使用 DOM ...

    java读取xml文件生成文件

    Java语言在处理XML文件时,提供了丰富的API和库,使得我们可以轻松地读取、解析、修改和生成XML文档。在给定的场景中,我们主要关注如何使用Java来读取XML文件并根据需求生成新的文件。以下是关于这个主题的详细说明...

    java 读取xml文件生成树形图

    在Java编程中,读取XML文件并将其转换为树形结构是一种常见的操作,尤其是在处理配置文件、数据交换或解析XML文档时。以下是一篇详细解释如何实现这一过程的文章。 首先,我们需要了解XML(eXtensible Markup ...

    java读取和写入xml文件

    在Java中,处理XML文件主要有四种方式:DOM(Document Object Model)、SAX(Simple API for XML)、StAX(Streaming API for XML)以及JAXB(Java Architecture for XML Binding)。下面将详细介绍这四种方法。 1....

Global site tag (gtag.js) - Google Analytics