XML解析之SAX解析技术案例

前端之家收集整理的这篇文章主要介绍了XML解析之SAX解析技术案例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Java代码

packagecom.xushouwei.xml;

importjava.io.File;

importjava.io.IOException;

importjava.text.DateFormat;

importjava.text.SimpleDateFormat;

importjavax.xml.parsers.ParserConfigurationException;

importjavax.xml.parsers.SAXParser;

importjavax.xml.parsers.SAXParserFactory;

importorg.xml.sax.Attributes;

importorg.xml.sax.SAXException;

importorg.xml.sax.helpers.DefaultHandler;

/**

* SAX解析XML数据

* 原理:

* SAX解析器对XML文档解析会从XML文档开始位置起进行解析,同事根据已经定义好的事件处理器,来决定当前所解析的部分(元素、属性、或是元素内容)是否有必要记录并保存。相对于DOM解析,他的有点事占用内存小查找速度更快点。

*@author徐守威

*

*/

publicclassSAXParseDemo {

publicstaticvoidmain(String[] args) {

//创建解析XML文档对象,其保存在E盘的根目录下的article.xml

File xmlFile=newFile("E:\\article.xml");

//创建一个SAXParserFactory对象,通过单例模式创建,SAXParserFactory对象相当于是SAXParser解析器的创建工程,通过SAXParserFactory.newInstance()方法创建SAXParserFactory对象

SAXParserFactory factory=SAXParserFactory.newInstance();

try{

//从SAXParserFactory得到SAXParser对象

SAXParser parser=factory.newSAXParser();

//解析文件内容

parser.parse(xmlFile,newMySaxHandler());

}catch(IOException e) {

//TODOAuto-generated catch block

e.printStackTrace();

}

}catch(ParserConfigurationException e) {

}catch(SAXException e) {

}

//因为SAX解析是事件驱动的,因此我们这里定义一个时间的监听器对象,MySaxHandler,该类可以继承DefaultHandler类,这类似Swing中的事件监听器,这里要了解一下

classMySaxHandlerextendsDefaultHandler

{

//格式化日期格式

staticDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");

//内容

privateString content;

//事件发生时元素中的字符

@Override

publicvoidcharacters(char[] ch,intstart,intlength)

throwsSAXException {

//TODOAuto-generated method stub

content=newString(ch,start,length);

//当解析到元素的结束标签时触发

publicvoidendElement(String uri,String localName,String qName)

//如果是标题

if("title".equals(qName))

{

System.out.println("标题:"+content);

//如果是作者

elseif("author".equals(qName))

System.out.println("作者:"+content);

//如果是邮件

elseif("email".equals(qName))

System.out.println("邮件:"+content);

//如果是内容

elseif("body".equals(qName))

System.out.println("内容:"+content);

//如果是日期

elseif("date".equals(qName))

System.out.println("日期:"+content);

//当解析到元素的开始标签时触发

publicvoidstartElement(String uri,String qName,

Attributes attributes)throwsSAXException {

if("article".equals(qName))

//如果节点名称为article,则输出article元素属性category

System.out.println("\r\n找到一篇文章,所属分类:"+attributes.getValue("category")+".");

}

xml代码

<?xml version="1.0" encoding="GB2312"?> <articles> <article category="Android"> <title>Android学习之路</title> <author>徐守威</author> <email>shouweixu@foxmail.com</email> <date>2016-05-20</date> </article> <article category="JavaWeb"> <title>JavaWeb学习笔记</title> <author>Jasxu</author> <email>shouweixu@qq.com</email> <date>2016-05-21</date> </article> </articles>

原文链接:https://www.f2er.com/xml/295196.html

猜你在找的XML相关文章