SAX解析XML分为如下几步:
// **1.创建XML解析处理器**
// 使用XML_DefaultHandler创建XML解析处理器xml_Handler
XML_DefaultHandler xml_Handler = new XML_DefaultHandler();
// **2.创建SAX解析器**
// 使用SAXParserFactory创建SAX解析器工厂对象
SAXParserFactory sax_Factory = SAXParserFactory.newInstance();
// 使用SAX解析器工厂对象sax_Factory创建SAX解析器sax_Parser
SAXParser sax_Parser = sax_Factory.newSAXParser();
// **3.将XML解析处理器分配给解析器**
首先搭建解析的框架:
public void parse() throws Exception { // **1.创建XML解析处理器** // 使用XML_DefaultHandler创建XML解析处理器xml_Handler XML_DefaultHandler xml_Handler = new XML_DefaultHandler(); // **2.创建SAX解析器** // 使用SAXParserFactory创建SAX解析器工厂对象 SAXParserFactory sax_Factory = SAXParserFactory.newInstance(); // 使用SAX解析器工厂对象sax_Factory创建SAX解析器sax_Parser SAXParser sax_Parser = sax_Factory.newSAXParser(); // **3.将XML解析处理器分配给解析器** sax_Parser.parse(new FileInputStream(new File("UnGangMember.xml")), xml_Handler); }
根据框架,XML解析处理器搭建如下:
package sj.SaxResolutionXml_v01; import java.util.ArrayList; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; /** * XML解析处理器 * * @author Songjie_xuan * @time 2014-10-08 * */ public class XML_DefaultHandler extends DefaultHandler { private ArrayList<UnGang_Member> unMember_List; private String str_Values; private UnGang_Member unGang_Member; /** * 解析开始 */ @Override public void startDocument() throws SAXException { System.out.println("解析开始"); } /** * 解析结束 */ @Override public void endDocument() throws SAXException { System.out.println("解析结束"); } /** * 开始解析文档中的元素 */ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if ("unGang_Member".equals(qName)) { unGang_Member = new UnGang_Member(); unMember_List.add(unGang_Member); } } /** * 文档中的元素解析完毕 */ @Override public void endElement(String uri, String localName, String qName) throws SAXException { if (qName.equals("name")) { unGang_Member.name = str_Values; } else if (qName.equals("sex")) { unGang_Member.position = str_Values; } } @Override public void characters(char[] ch, int start, int length) throws SAXException { str_Values = new String(ch, start, length); } }
解析文档要知道文档实例:
package sj.SaxResolutionXml_v01; /** * UnGang_Member节点 * * @author Songjie_xuan * @time 2014-10-08 * */ public class UnGang_Member { String status; String name; String position; public String toString() { return status + " " + name + " " + position; } }
XML文档如下:
<?xml version = "1.0" encoding = "UTF-8"?> <member confra='魔宗'> <level status='圣门二代弟子大师兄'> <name>七夜</name> <position>宗主</position> </level> <level status='圣门二代弟子小师弟'> <name>杨亦风</name> <position>护法</position> </level> </member>
XML文档通过SAX解析,由于其使用渐次解析从而避免了将文档全部加载到内存中,大大降低了内存的消耗,这是SAX解析最大的有点。
相关推荐
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
Sax解析xml文件详细例子,解析复杂节点的xml,把内容显示到view中,例子简单完整,易用
Sax解析XML文件解
Servlet利用SAX解析XML文档,JAX,JSWDP,Servlet利用SAX解析XML文档
Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有...
Java SAX解析Xml Demo(详细注释)
绝对可用的SAX解析XML文件项目,费了九牛二虎之力,才找到的好资源,特与大家共享出来。直接导入eclipse就可运行,无需任何配置。
DOM和SAX解析XML文档
SAX解析xml文件并显示在android虚拟机上实例源码,可以学习一下SAX解析技术
SDcard数据访问SAX解析XML文件
下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, EntityResolver 和 ErrorHandler 。下面的例子可能...
SAX解析XML文件以及对取出的id放进数组进行冒泡排序(从大到小排序和从小到大排序)
dom,dom4j,sax解析xml 文件经典实例,内置详细注解
从Tomcat下载xml并使用SAX解析xml文件
android用sax解析xml文件实例源码
java学习笔记——使用DOM解析XML和使用SAX解析XML