王朝网络
分享
 
 
 

一套完整的SAX的例子

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

//MySAXExample.java

/**

*SAX作为一种处理模型非常简单,基本由如下三个步骤组成:

*1、实现一个扩展DefaultHandler的类,作为每种类型的结构包含回调(callback)方法,而这些类型的结构是在包含了基于您需要的实现方案中找到的

*2、初始化一个新的SAX Parser类。Parser读取XML源文件,并触发DefaultHandler类中所实现的一个回调方法

*3、顺序读取XML源文件。在顺序读取中,无法随机访问结构中的元素。剩下的工作取决于Handler类中您的实现方案.

*/

import javax.xml.parsers.*;

class MySAXExample{

public MySAXExample(){}

public static void main(String[] args){

try{

/**

* 利用SAXParserFactory的静态newInstance()方法获取一个factory类

*/

SAXParserFactory factory = SAXParserFactory.newInstance();

/**

* 通过调用newSAXParser()静态方法从factory中获取SAX分析器

*/

SAXParser parser = factory.newSAXParser();

/**

* 分析XML数据:调用SAXParser的分析方法,把XML输入作为第一个参数,而DefaultHandler实现方案作为第二个参数

*/

parser.parse("PurchaseOrder.xml",new MySAXExampleHandler());

}

/**

* 使用的factory类是作为系统属性、jar服务或者平台的默认值提供的。如果属性在运行时没有找到,则抛出一个FactoryConfigurationError

* 错误,同时给出一条消息,说明问题的起因。分析器factory可以经过补充配置,以创建验证和(或)支持命名空间分析器的实例。分析器没有返回

* 属性时,抛出一个ParserConfigurationException异常。

*/

catch(FactoryConfigurationError fce){

System.out.println("FactoryConfiguration occurred:"+fce);

}

catch(ParserConfigurationException pce){

System.out.println("ParserConfigurationException occurred:"+pce);

}

catch(Exception e){

System.out.println("Exception occurred:"+e);

}

}

}

//****************************************************************************************

//MySAXExampleHandler.java

import org.xml.sax.*;

//import org.xml.sax.helpers;

//import org.xml.sax.ext.*;

import org.xml.sax.helpers.DefaultHandler;

/**

*JAXP特有的SAX处理XML步骤如下:

*1、获取Factory和Parser类来实现XML处理。

*2、设置命名空间、有效性验证等选项以及功能。

*3、创建一个DefaultHandler实现方案类。

*/

public class MySAXExampleHandler extends DefaultHandler{

public MySAXExampleHandler(){}

public void startDocument() throws SAXException{ //startDocument():仅在XML文档开始时调用该方法

System.out.println("START DOCUMENT");

System.out.println("<?xml version='1.0'?>");

}

public void endDocument() throws SAXException{ //endDocument():当分析器到达XML文档的末端时调用该方法

System.out.println("END DOCUMENT");

}

public void characters(char bur[], //characters():对元素中包含的字符数据调用该方法

int offset,

int len)

throws SAXException{

String s = new String(bur,offset,len);

System.out.println(s);

}

public void startElement(String namespaceURI, //startElement():每次遇到一个新的开始标记或者元素时(例如,<element>),就调用该方法

String localName,

String rawName,

Attributes attrs)

throws SAXException{

System.out.print("<"+localName);

int length = attrs.getLength();

for(int i=0;i<length;i++){

System.out.print(""+attrs.getLocalName(i)+

"="+attrs.getValue(i));

}

System.out.println(">");

}

public void endElement(String namespaceURI, //endElement():当元素结束时(例如,<element>,就调用该方法

String localName,

String rawName)

throws SAXException{

System.out.println("</"+localName+">");

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有