JAVA SAX之简单实用

JAVA SAX之简单实用

SAX是Simple API for XML的缩写(官网: saxproject),一个用来解决大型XML文档读取的接口,下面是我的简单试用:
import  java.io.FileInputStream;

import  javax.xml.parsers.SAXParser;
import  javax.xml.parsers.SAXParserFactory;

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;

/** */ /**
 * 需要继承自DefaultHandler
 * 
@author kinkding
 
*/

public   class  Test  extends  DefaultHandler  {
    
protected StringBuffer bodyText = new StringBuffer();
    
private int level = 0;
    
    
/** *//** 开始解析元素 */
    
public void startElement(String namespaceURI, String localName, String fullName, Attributes attributes)
            
throws SAXException {
        System.out.print(getPrefix() 
+ "<" + fullName + "(");
        
for (int i = 0; i < attributes.getLength(); i++{
            String temp 
= attributes.getQName(i);
            String value 
= attributes.getValue(i);
            System.out.print(temp 
+ ":" + value + " ");
        }

        System.out.println(
")>");
        level
++;
    }

    
    
/** *//** 元素间内容的处理 */
    
public void characters(char buffer[], int start, int length) throws SAXException {
        bodyText.append(buffer, start, length);
    }

    
    
/** *//** 结束元素的解析 */
    
public void endElement(String namespaceURI, String localName, String fullName) throws SAXException {
        System.out.println(getPrefix() 
+ bodyText.toString().trim());
        bodyText 
= new StringBuffer();
        level
--;
        System.out.println(getPrefix() 
+ "<" + fullName + ">");
    }


    
private String getPrefix() {
        String s 
= "";
        
for (int i = 0; i < level; i++{
            s 
+= " ";
        }

        
return s;
    }


    
public XMLReader getReader() throws Exception {
        SAXParser parser 
= SAXParserFactory.newInstance().newSAXParser();
        XMLReader reader 
= parser.getXMLReader();
        reader.setDTDHandler(
this);
        reader.setContentHandler(
this);
        reader.setEntityResolver(
this);
        reader.setErrorHandler(
this);
        
return reader;
    }


    
public static void main(String[] args) throws Exception {
        Test t 
= new Test();
        XMLReader reader 
= t.getReader();
        reader.parse(
new InputSource(new FileInputStream("test.xml")));
    }

}

test.xml文件内容如下:
<? xml version='1.0' ?>
< table  name ="job"  code ="1234" >
    
< tr > 我的家 </ tr >
    
< td  colspan ="2" > 生命就像一条大河 </ td >
    
< td  colspan ="3" > goodjob </ td >
</ table >

输出如下:
<table(name:job code: 1234  )>
 <tr()>
  我的家
 <tr>
 <td(colspan:
2  )>
  生命就像一条大河
 <td>
 <td(colspan:
3  )>
  goodjob
 <td>
 
<table>

你可能感兴趣的:(JAVA SAX之简单实用)