关于xml学习(三)—— JAXP-SAX解析
来源:互联网 发布:淘宝网汽车坐垫套全包 编辑:程序博客网 时间:2024/05/01 12:54
SAX解析原理:
SAX 是事件驱动的XML处理方法
逐行扫描文档,一边扫描一边解析
SAX仅需实现部分接口时扩展org.xml.sax.helpers.DefaultHandler类
DefaultHandler类默认的空实现
使用SAX方式解析XML:
使用SAX方式解析XML:
1)使用SAXParserFactory创建SAX解析工厂
SAXParserFactoryspf =SAXParserFactory.newInstance();
2)通过SAX解析工厂得到解析器对象
SAXParser sp = spf.newSAXParser();
3)通过解析器对象得到一个XML的读取器
XMLReaderxmlReader =sp.getXMLReader();
4)设置读取器的事件处理器
xmlReader.setContentHandler(newXMLContentHandler());
5)解析xml文件
xmlReader.parse("book.xml");
SAX的事件驱动模型:
SAX的事件驱动模型:
startDocument:文档开始
startElement:元素开始
uri:名称空间URI,如果元素没有则为空字符串。
localName:本地名称,如果没有名称空间,则为空字符串。
qName: 限定的名称
attributes:附加到元素的属性。
characters:文本
通过new String(ch,start,length)获得字符串
endElement:元素结束
endDocument:文档结束
实例:
SAXTest.java:
MyDefaultHandler.java:
运行结果:
实例:
SAXTest.java:
package com.example.jaxp.SAX;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.helpers.DefaultHandler;public class SAXTest {public static void main(String[] args) throws Exception {// 获取SAX解析工厂实例SAXParserFactory factory = SAXParserFactory.newInstance();// 获取SAX解析器SAXParser parser = factory.newSAXParser();DefaultHandler dh = new MyDefaultHandler();// 解析xml文档parser.parse("book.xml", dh);}}
MyDefaultHandler.java:
package com.example.jaxp.SAX;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class MyDefaultHandler extends DefaultHandler { /** * 如果xml文件使用了schema约束 <xs:element> * * uri:schema -- targetNameSpace * * localName--element * * qName---xs:element * 如果不使用 * * uri:null * * localName:null * * qName : element * * Attributes:当前元素的所有的属性的集合 */ @Overridepublic void startDocument() throws SAXException {System.out.println("文档的开始");}@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {System.out.println("元素开始:" + qName + "****" + attributes.getValue("id"));}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {System.out.println(new String(ch, start, length));}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {System.out.println("元素结束:" + qName);}@Overridepublic void endDocument() throws SAXException {System.out.println("文档的开始");}}
运行结果:
0 0
- 关于xml学习(三)—— JAXP-SAX解析
- 关于xml学习(三)—— JAXP-DOM解析
- 【XML】JAXP-SAX解析xml
- jaxp sax解析xml代码
- xml解析-jaxp-sax方式
- jaxp利用Sax解析XML
- XML解析(增删改查)-DOM解析(Jaxp、DOM4J实现DOM解析)、SAX解析(Jaxp实现SAX解析)
- xml解析技术-jaxp-sax解析
- Java用dom和sax解析xml代码(Jaxp)
- 【XML】DOM—JAXP 解析
- 【JAXP】SAX方式解析XML文件
- XML的Jaxp中的SAX解析
- JAXP SAX模式解析xml文档
- jaxp的sax方式解析xml
- jaxp通过sax方式解析xml文件
- XML、Jaxp SAX解析、dom4j解析XML、XPath运用
- xml—SAX解析
- JAXP下的XML解析用法(包括dom解析和sax解析)
- iOS之UITextView的使用——使用导航栏关闭虚拟键盘
- ghost win7旗舰版系统安装图文教程
- compatibilities between Oracle database servers and clients
- UIButton的一些技巧
- Django运行方式及处理流程总结(xianglong.me)
- 关于xml学习(三)—— JAXP-SAX解析
- Swift语言IOS8开发战记7.Delete TableViewCell
- N-Queens I,II, Trapping Rain Water
- Ember Data- Get a Model in the Console
- iOS开发——设计模式那点事
- 1-4 闭包
- c++———静态变量static
- CI 分页 bootstrap样式
- BI系统的应用组织思路与数据分析模式