SAX 解析 XML

来源:互联网 发布:dw格式化js代码 编辑:程序博客网 时间:2024/06/11 20:29

SAX:Simple API for XML

 

一个入门小例子:

 

package com.ly.sax;

import java.io.File;
import java.io.FileReader;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;

public class SAX002 {
 public static void main(String[] args) throws Exception {
  // 创建一个XMLReader对象
  XMLReader xr = XMLReaderFactory.createXMLReader();
  
  // 设置ContentHandler
  xr.setContentHandler(new MyHandler());
  
  // 设置要解析的xml文件
  File file = new File("xml/test001.xml");
  
     // 解析xml文件
  xr.parse(new InputSource(new FileReader(file)));
  
  // 打印成功信息
  System.out.println("parsing success.");
 }
}


class MyHandler extends DefaultHandler{
 
 /**
  * 最开始解析文档时调用此函数
  */
 @Override
 public void startDocument() throws SAXException {
  // TODO Auto-generated method stub
  super.startDocument();
  System.out.println("startDocument() invoked.");
 }
 
 /**
  * 结束解析文档时调用此函数
  */
 @Override
 public void endDocument() throws SAXException {
  // TODO Auto-generated method stub
  super.endDocument();
  System.out.println("endDocument() invoked.");
 }

 /**
  * 功能:每结束一个元素标签都会调用此函数
  *
  */
 @Override
 public void endElement(String uri, String localName, String qName)
   throws SAXException {
  System.out.println("endElement:" + localName);
 }

 /**
  * 功能:每解析一个元素标签都会调用此函数
  * uri-命名空间,如果没有为空
  * localName-指向标签的名字:如<student> localName = student
  * qName-指向带前缀的标签的名字;如 <ss:student> qName = ss:student
  * atts-指向元素的属性
  */
 @Override
 public void startElement(String uri, String localName, String qName,
   Attributes atts) throws SAXException {
  System.out.println("startElement:" + localName);
 }
 
 /**
  * 功能:打印标签中的字符串
  * ch-字符数组
  * start-读取字符串的起始长度
  * length-读取字符串的总长度
  */
 @Override
 public void characters(char[] ch, int start, int length) throws SAXException {
  // TODO Auto-generated method stub
  System.out.println(new String(ch,start,length));
 }
}

 

原创粉丝点击