day day up--Java编程之SAX解析XML文件
来源:互联网 发布:微商城 淘宝客 编辑:程序博客网 时间:2024/05/29 13:31
SAX(Simple API for XML),是Java解析XML文件的一种方案,它边读取文件边解析,它是事件驱动型的,简单说就是扫描过程中任何时候遇到某个节点,即触发其相应的处理函数对节点或者内容进行解析处理。使用SAX来解析文件更快、效率更高,方法实现也简单,首先得根据需求实现你自己对文件内容处理的ContentHandler,定义处理的方法方式,然后XML解析器根据这个ContentHandler的规定来解析取得你想要的数据。实现方式如下。
<item> <title>SAX解析</title> <content>SAX解析是Java对XML文件进行解析的一种方案</content></item><item>...</item>
首先实现自己的ContentHandler:
public class MyContentHandler extends DefaultHandler {public static final String tag = "MyContentHandler";public String title; //用于存储得到的titlepublic String content; //用于存储得到的contentpublic String element; //用于存储标签元素的keypublic StringBuffer sb; //用于拼接元素的String值,防止元素值过长导致解析内容丢失的问题public void startDocument() throws SAXException {Log.i(tag, "startDocument"); //开始解析文档}public void endDocument() throws SAXException {Log.i(tag, "endDocument"); //文档解析结束}public void startElement(String namespaceURI, String localName,String qName, Attributes attr) throws SAXException { //开始解析元素if (localName.equals("title")){element = localName;return;}if(localName.equals("content")){element = localName;return;}}public void endElement(String namespaceURI, String localName, String qName)throws SAXException { //对应的元素解析结束Log.i(tag, "endElement:"+localName);if(localName.equals("title"))Log.i(tag, "title="+title);if(localName.equals("content"))Log.i(tag, "content"+content);}public void characters(char[] ch, int start, int length)throws SAXException { //元素对应value的处理String s = null;if (element.equals("title")){s = new String(ch, start, length);sb.append(s);title = sb.toString();}if (element.equals("content") ){s = new String(ch, start, length);sb.append(s);content = sb.toString();}}}
在characters()方法里面进行内容处理的时候,如果ch过长,它会再次执行该方法接着读取value,直到取到所有的value,所以可能会多次执行该方法,用StringBuffer进行内容拼接防止丢失。然后结束该元素的解析后对value进行处理即可。然后创建XML解析器,设定ContentHandler,即可开始解析。自己创建方法XMLParser,将ContentHandler作为参数传入就可以了。resultStr是读取的文件内容,parse方法里也可以放文件的URL。
/* * XML解析器创建 */public XMLParser(String resultStr,ContentHandler handler){try{//创建一个SAXParserFactorySAXParserFactory factory = SAXParserFactory.newInstance();XMLReader reader = factory.newSAXParser().getXMLReader();//为XMLReader设置内容处理器reader.setContentHandler(handler);//开始解析文件reader.parse(new InputSource(new StringReader(resultStr)));}catch(Exception e){e.printStackTrace();}}
0 0
- day day up--Java编程之SAX解析XML文件
- day day up--Java编程之RandomAccessFile操作系统属性文件
- JAVA DAY DAY UP
- day day up--Java实现http文件下载
- day day up--Java设计模式之单例模式
- Java 解析 XML 文件之 SAX 解析
- Java之SAX解析XMl文件
- day day up--Java多线程理论知识碎片
- day 02xml解析
- SAX编程解析xml文件
- day day up!
- day day up
- day day up
- DB DAY DAY UP
- Misc Day Day Up
- LINUX|DAY DAY UP~
- Day Day up
- day day up
- ios断点续传实现
- gcc,gdb 个人笔记
- OpenSceneGraph Android 开发学习-学习材料
- springMVC从前台想后台传递参数
- WTL 9.0的变化 - atlapp.h
- day day up--Java编程之SAX解析XML文件
- Swift编程语言学习7—— 枚举
- 由 Chromebook 可见,未来的发展方向
- 大话设计の设计原则汇总(一)
- 南北棋牌游戏大不同,我就爱玩南方棋牌
- JS 简易控制台插件
- USB枚举过程详细分析
- aul 学习测试(测)
- 4.1.1 A - Calendar(简单线性表)(日期查找)(数组应用)