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
  • 相关阅读:
    java之类的封装
    java飞机大战之子弹的自动生成
    java之线程飞机大战制作
    java线程游戏之背景图片的移动
    mysql的安装以及简单的命令符
    java之控制多幅图片
    java之线程
    JAVA之数组队列
    java之链表
    python之数据库的操作(课前准备)
  • 原文地址:https://www.cnblogs.com/cici20166/p/6380375.html
Copyright © 2011-2022 走看看