SAX解析

SAX解析工具-  Sun公司提供的。内置在jdk中。org.xml.sax.
核心的API:
     SAXParser类: 用于读取和解析xml文件对象
     parse(File f, DefaultHandler dh)方法: 解析xml文件
                
        参数一: File:表示 读取的xml文件。
        参数二: DefaultHandler: SAX事件处理程序。使用DefaultHandler的子类
1.创建SAXParser对象  
     SAXParser parser=SAXParserFactory.newInstance().newSAXParser();
2.调用parse方法
        parser.parse(new File("./src/contact.xml"), new MyDefaultHandler());
}                    [一个类继承class 类名(extends DefaultHandler)  在调用是创建传进去
DefaultHandler类的API:
    void startDocument()  :  在读到文档开始时调用
    void endDocument()  :在读到文档结束时调用
    void startElement(String uri, String localName, String qName, Attributes attributes)  :读到开始标签时调用                
    void endElement(String uri, String localName, String qName)   :读到结束标签时调用
    void characters(char[] ch, int start, int length)  : 读到文本内容时调用

SAX代码例子:

public class SAXReadXML {
  public static void main(String[] args) {
         //创建SAXParserFactory对象
      SAXParserFactory spf=SAXParserFactory.newInstance();
    try {   //创建SAXParser对象
        SAXParser saxParser=spf.newSAXParser(); 
        File file=new  File(“D:\itcastworkspace\xmlSax\src\cn\itcast\sax\students.xml”);
        /*解析文件  
         *new XMLContentHandler() 事件处理程序*/
        saxParser.parse(file, new XMLContentHandler());
       } 
    
catch (ParserConfigurationException e) { e.printStackTrace();}
    
catch (SAXException e) { e.printStackTrace();}
    
catch (IOException e) { e.printStackTrace();}  }
}
public class XMLContentHandler extends DefaultHandler{
  //当前元素中的数据
  private String currentData;
  //取得元素数据
  public void characters(char[] ch, int start, int length)throws SAXException {
      currentData=new String(ch,start,length);
  }
   //在解析整个文档结束时调用
  public void endDocument() throws SAXException {
        System.out.println("结束文档");
  }
   //在解析元素结束时调用
  public void endElement(String uri, String localName, String name)throws SAXException {
      System.out.println("节点数据  *************************"+this.currentData);
      System.out.println("结束元素 ************"+name);
  }
  //在解析整个文档开始时调用
  public void startDocument() throws SAXException {
     System.out.println("开始文档");
  }

 //在解析元素开始时调用
  public void startElement(String uri, String localName, String name,Attributes attributes) throws SAXException {
      System.out.println("开始元素 ************"+name);
  }
}
原文地址:https://www.cnblogs.com/linst/p/5868997.html