现在的位置: 首页 > 综合 > 正文

XML解析器-简单工厂模式

2012年10月22日 ⁄ 综合 ⁄ 共 2398字 ⁄ 字号 评论关闭

SAX的使用

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;

 

import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

 

public class SaxTest1

{

    public static void main(String[] args) throws
Exception, SAXException

    {

       //step1: 获得SAX解析器工厂实例

       SAXParserFactory factory =
SAXParserFactory.newInstance();

      

       //step2: 获得SAX解析器实例

       SAXParser parser =
factory.newSAXParser();

      

       //step3:开始进行解析

       parser.parse(new File("students.xml"),new MyHandler());

    }

}

 

class MyHandler extends DefaultHandler

{

 

    @Override

    public void startDocument() throws
SAXException

    {

       System.out.println("startDocument");

    }

 

    @Override

    public void endDocument() throws
SAXException

    {

       System.out.println("endDocument");

    }

 

    @Override

    public void startElement(String uri,
String localName, String qName,

           Attributes attributes) throws
SAXException

    {

       System.out.println("startElement");

    }

 

    @Override

    public void endElement(String uri,
String localName, String qName)

           throws SAXException

    {

       System.out.println("endElement");

    }

}

 

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;

 

import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

 

public class SaxTest2

{

    public static void main(String[] args) throws
Exception, SAXException

    {

       SAXParserFactory factory =
SAXParserFactory.newInstance();

 

       SAXParser parser =
factory.newSAXParser();

 

       parser.parse(new File("students.xml"), new MyHandler2());

    }

}

 

class MyHandler2 extends DefaultHandler

{

    private Stack<String> stack = new
Stack<String>();

 

    private String name;

 

    private String sex;

 

    private String age;

 

    @Override

    public void startElement(String uri,
String localName, String qName,

           Attributes attributes) throws
SAXException

    {

       stack.push(qName);

 

       for (int i = 0; i < attributes.getLength(); i++)

       {

           String attrName =
attributes.getQName(i);

           String attrValue =
attributes.getValue(i);

 

           System.out.println(attrName + "=" +
attrValue);

       }

    }

 

    @Override

    public void characters(char[] ch, int start, int length)

           throws SAXException

    {

       String tag = stack.peek();

 

       if ("name".equals(tag))

       {

           name = new String(ch, start, length);

       }

       else if ("sex".equals(tag))

       {

           sex = new String(ch, start, length);

       }

       else if ("age".equals(tag))

       {

抱歉!评论已关闭.