zoukankan      html  css  js  c++  java
  • 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);
      }
    }
  • 相关阅读:
    【转】JS对Cookie的读写删除
    【转】【Python】 python中的编码问题报错 'ascii' codec can't decode 及 URL地址获取中文
    【转】【Python】Python中的__init__.py与模块导入(from import 找不到模块的问题)
    【转】【Centos】nginx配置:location配置方法及实例详解
    【转】【Html】Vuejs2.0学习之二(Render函数,createElement,vm.$slots,函数化组件,模板编译,JSX)
    【Html】Vue动态插入组件
    【HTML】div居中显示
    神奇的bug,退出时自动更新时间
    curl Array to string conversion 错误
    PHP可变参数
  • 原文地址:https://www.cnblogs.com/linst/p/5868997.html
Copyright © 2011-2022 走看看