xml的四种解析方法及源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
xml的四种解析方法及源代码(SAX、DOM、JDOM、DOM4J)
第一种:SAX解析
SAX处理机制:SAX是一种基于事件驱动的API。利用SAX解析XML文档,牵涉到两个部分:解析器和事件处理器。解析器负责读取XML文档,并向事件处理器发生事件,如元素开始和元素结束事件;而事件处理器则负责对事件做出响应,对传递的XML数据进行处理。
测试用的xml文件:db.xml
Xml代码
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(""+target+" "+data+"?>");
}
/** *//**
* 元素开始事件
* 参数说明:
* 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 {