SAX解析XML文件
来源:互联网 发布:php时间戳转换成日期 编辑:程序博客网 时间:2024/04/28 08:29
XML(eXtended Markup Language,可扩展标记性语言)提供了一套跨平台,跨网络,跨程序的语言数据描述方式,使用XML可以方便地实现数据交换,系统配置,内容管理等常见功能。
使用SAX 解析XML文件,是顺序读入需要的文件内容,不受文件大小的限制,由于采用部分读取,只能对文件按从头到尾解析一遍,不支持文件的随意存取,只能读着xml文件的内容,但不能修改,当然,这种解析方式,在开发上比较复杂,需要自定义事件处理器,对于开发人员更加灵活,可以用sax建立对xml对象模型。
现在开始用代码来实现SAX解析的方法,如下:
XML文件如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <?xml-stylesheet type="text/css" href="attrib.css"?>
- <addresslist>
- <linkman id="zlj">
- <name>xt</name>
- <email>xxxx@sina.com</email>
- </linkman>
- <linkman id="zs">
- <name>张三</name>
- <email>XXXXX@sina.com</email>
- </linkman>
- </addresslist>
首先要自定义一个SAX的XML解析器,代码如下:
- package com.etc.sax;
- import org.xml.sax.Attributes;
- import org.xml.sax.SAXException;
- import org.xml.sax.helpers.DefaultHandler;
- /**
- * 用sax来解析xml
- * sax 解析器
- * @author zhang lj
- *
- * 2012-12-19
- */
- public class MySax extends DefaultHandler{
- @Override
- public void startDocument() throws SAXException { //文档开始
- System.out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
- }
- @Override
- public void endDocument() throws SAXException {
- System.out.println("\n 文档读取结束 ............");
- }
- @Override
- public void startElement(String uri, String localName, String name,
- Attributes attributes) throws SAXException {
- System.out.print("<");
- System.out.print(name);
- if(attributes!=null){
- for(int i=0;i<attributes.getLength();i++){
- System.out.print(""+attributes.getQName(i)+"=\""+attributes.getValue(i)+"\"");
- }
- }
- System.out.print(">");
- }
- @Override
- public void characters(char[] ch, int start, int length)
- throws SAXException {
- System.out.print(new String(ch,start,length));
- }
- @Override
- public void endElement(String uri, String localName, String name)
- throws SAXException {
- System.out.print("</");
- System.out.print(name);
- System.out.print(">");
- }
- }
然后对XML文件进行解析,代码如下:
- package com.etc.sax;
- import javax.xml.parsers.SAXParser;
- import javax.xml.parsers.SAXParserFactory;
- /**
- *
- * @author zhang lj
- *
- * 2012-12-19
- */
- public class TestSAX {
- public static void main(String[] args) throws Exception {
- SAXParserFactory factory=SAXParserFactory.newInstance();
- SAXParser parser=factory.newSAXParser();
- parser.parse("sax_demo.xml", new MySax());
- }
- }
到这边解析 就完成了,让我们再看一下dom解析 和sax解析 的区别吧,
区别如下:
- xml文件解析-SAX
- sax解析xml文件
- SAX解析xml文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析xml文件
- SAX解析xml文件
- XML文件解析 sax
- SAX解析xml文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析XML文件
- sax 解析xml文件
- xml文件Sax解析
- SAX 解析XML 文件
- SAX 解析Xml文件
- RIL及其问题(驱动 串口)
- 提高mac app store的下载速度
- JAVA基础--ArrayList删除的问题
- TCP与UDP区别和用途
- 为了忘却的怀念--致逝去的Aaron Swartz先生
- SAX解析XML文件
- C# 设计控件时,过滤掉大部分属性,仅保留关心的属性
- Interview-Personal Skills
- Interview- Common Q&A
- 优秀员工离职对公司也是有利的
- ajax 第一个简单程序
- 内容很短,但问题本身,是你会如何?
- ZDSoft 网站生成系统漏洞
- 突破护卫神技术总汇