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
  • 相关阅读:
    如何学习go源码
    最近打仁王2
    如何在时间复杂度为O(n)空间复杂度为O(1)的情况下完成链表的逆置
    漏洞复现-shellshock-bash破壳
    漏洞复现-aria2-任意文件写入
    漏洞复现-apereo-cas-4.1-rce
    漏洞复现-cgi-httpoxy
    漏洞复现-weblogic_weak_password-getshell
    sqlserver2008安装教程
    mysql内一些可以延时注入的查询语句
  • 原文地址:https://www.cnblogs.com/cici20166/p/6380375.html
Copyright © 2011-2022 走看看