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);
      }
    }
  • 相关阅读:
    C# 读取 vCard 格式
    C#自动选择出系统中最合适的IP地址
    WPF专业编程指南
    WPF专业编程指南
    随手复习一下委托:delegate
    迟到的 WPF 学习 —— 控件
    迟到的 WPF 学习 —— 路由事件
    迟到的 WPF 学习 —— 依赖项属性
    迟到的 WPF 学习 —— 布局
    JavaScript 左右上下自动晃动,自动移动。
  • 原文地址:https://www.cnblogs.com/linst/p/5868997.html
Copyright © 2011-2022 走看看