zoukankan      html  css  js  c++  java
  • SAX解析XML-例子

    1.要解析的xml

    <?xml version="1.0" encoding="UTF-8"?>
    <employees>
        <employee id="001">
            <name>cici</name>
            <department>finace</department>
            <supervisor>lily</supervisor>
        </employee>
        <employee id="002">
            <name>alex</name>
            <department>develope</department>
            <supervisor>lily</supervisor>
        </employee>
    </employees>

    2.继承DefaultHandler的子类EmployeeHandler.java,重写方法

    package sax;
    
    import java.io.BufferedInputStream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.List;
    import java.util.Map;
    
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXNotRecognizedException;
    import org.xml.sax.SAXNotSupportedException;
    import org.xml.sax.XMLReader;
    import org.xml.sax.helpers.XMLReaderFactory;
    
    public class SaxXMLTest {
        public static void main(String[] args) throws SAXException, ParserConfigurationException, IOException{
            readXMLBySaxParser();
            readXMLByXMLReader();
        }
    
        private static void readXMLBySaxParser() throws ParserConfigurationException,
                SAXException, IOException {
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser parser = factory.newSAXParser();
            
            EmployeeHandler handler = new EmployeeHandler("employee");
            parser.parse("src\sax\employees.xml", handler);
            List<Map<String, String>> employees = handler.getEmployees();
            System.out.println(employees.toString());
        }
    
        private static void readXMLByXMLReader() throws SAXException,
                SAXNotRecognizedException, SAXNotSupportedException, FileNotFoundException, IOException {
            XMLReader reader = XMLReaderFactory.createXMLReader();
            //打开解析器验证的功能
            reader.setFeature("http://xml.org/sax/features/validation",true);
            //开启明明空间特性
            reader.setFeature("http://xml.org/sax/features/namespaces",true); 
            EmployeeHandler handler = new EmployeeHandler("employee"); 
            reader.setContentHandler(handler);
            reader.parse(new InputSource(new BufferedInputStream(new FileInputStream("src\sax\employees.xml"))));
        }
    }
    View Code

    3.测试类 SaxXMLTest.java,用SAXParser和XMLReader两种方式解析

    package sax;
    
    import java.io.BufferedInputStream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.List;
    import java.util.Map;
    
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXNotRecognizedException;
    import org.xml.sax.SAXNotSupportedException;
    import org.xml.sax.XMLReader;
    import org.xml.sax.helpers.XMLReaderFactory;
    
    public class SaxXMLTest {
        public static void main(String[] args) throws SAXException, ParserConfigurationException, IOException{
            readXMLByHandler();
            readXMLByXMLReader();
        }
    
        private static void readXMLByHandler() throws ParserConfigurationException,
                SAXException, IOException {
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser parser = factory.newSAXParser();
            
            EmployeeHandler handler = new EmployeeHandler("employee");
            parser.parse("src\sax\employees.xml", handler);
            List<Map<String, String>> employees = handler.getEmployees();
            System.out.println(employees.toString());
        }
    
        private static void readXMLByXMLReader() throws SAXException,
                SAXNotRecognizedException, SAXNotSupportedException, FileNotFoundException, IOException {
            XMLReader reader = XMLReaderFactory.createXMLReader();
            //打开解析器验证的功能
            reader.setFeature("http://xml.org/sax/features/validation",true);
            //开启明明空间特性
            reader.setFeature("http://xml.org/sax/features/namespaces",true); 
            EmployeeHandler handler = new EmployeeHandler("employee"); 
            reader.setContentHandler(handler);
            reader.parse(new InputSource(new BufferedInputStream(new FileInputStream("src\sax\employees.xml"))));
        }
    }
    View Code
  • 相关阅读:
    [引用]SharePoint:在计算字段中使用Today, Me之类的函数的方法,有点搞笑,但是有效
    在infopath forms service 中自动保存而不用输入文件名
    MOSS的Sharepoint 列表中关于查阅项的处理
    Infopath Form Service示例:如何在InfoPath表单中引用SQL SERVER 中的数据?
    面对DNS劫持,只能坐以待毙吗?
    聚焦云原生,阿里云与 CNCF 共话「云未来,新可能」
    干货分享:细说双 11 直播背后的压测保障技术
    ALB Ingress 发布!轻松应对云原生应用流量管理
    如何用20分钟就能获得同款企业级全链路灰度能力?
    Serverless 架构模式及演进
  • 原文地址:https://www.cnblogs.com/cici20166/p/6380375.html
Copyright © 2011-2022 走看看