xml的四种解析方法及源代码

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

xml的四种解析方法及源代码(SAX、DOM、JDOM、DOM4J)

第一种:SAX解析

SAX处理机制:SAX是一种基于事件驱动的API。利用SAX解析XML文档,牵涉到两个部分:解析器和事件处理器。解析器负责读取XML文档,并向事件处理器发生事件,如元素开始和元素结束事件;而事件处理器则负责对事件做出响应,对传递的XML数据进行处理。

测试用的xml文件:db.xml

Xml代码

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:@localhost:1521:oracle

scott

tiger

DTD文件db.dtd

Xml代码

SAX解析实例一

org.xml.sax.DefalutHandler类: 可以扩展该类,给出自己的解析实现SAXPrinter.java

Java代码

import java.io.File;

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;

public class SAXPrinter extends DefaultHandler

{

/** *//**

* 文档开始事件

*/

public void startDocument() throws SAXException

{

System.out.println("");

}

/** *//**

* 接收处理指令事件

*/

public void processingInstruction(String target, String data) throws SAXException

{

System.out.println("");

}

/** *//**

* 元素开始事件

* 参数说明:

* uri - 名称空间 URI,如果元素没有任何名称空间 URI,或者没有正在执行名称空间处理,则为空字符串。

* localName - 本地名称(不带前缀),如果没有正在执行名称空间处理,则为空字符串。

* qName - 限定的名称(带有前缀),如果限定的名称不可用,则为空字符串。

* attributes - 附加到元素的属性。如果没有属性,则它将是空

的 Attributes 对象。

*/

public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXException

{

System.out.print("<"+qName);//输出元素名称

int len=attrs.getLength();//元素属性列表长度

//利用循环输出属性列表

for(int i=0;i

{

System.out.print(" ");

System.out.print(attrs.getQName(i));

System.out.print("=\"");

System.out.print(attrs.getValue(i));

System.out.print("\"");

}

System.out.print(">");

}

/** *//**

* 元素中字符数据事件:接收元素中字符数据

* 注意:1.应用程序不要试图读取ch数组指定范围外的数据,(即start 至length之外)

* 2.有些解析器将使用ignorableWhitespace()方法来报告元素内容中的空白,而不是characters()方法,如:进行有效性验证的解析器

*/

public void characters(char[] ch, int start, int length) throw s SAXException

{

相关文档
最新文档