• JAXP学习总结


    1.JAXP简介

    和DOM一样,都是一种XML解析技术。JAXP开发包是JavaSE的一部分

    在javax.xml.parsers包中,定义了几个工厂类,通过调用这些工厂类,可以得到对XML文档进行解析的DOM或SAX的解析器对象

    2.SAX解析的特点

    不同于DOM解析,SAX无需加载整个XML文档,即在读取文档的时候便对文档进行处理

    SAX采用事件处理的方式解析XML文件,利用SAX解析XML文档,涉及 解析器 和 事件处理器 两个部分。

        解析器:可以使用JAXP的API创建,创建出SAX解析器后,便可以指定解析器去解析某个XML文档。

        事件处理器:由程序员编写

    3.DEMO

    有如下XML文件car.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <车辆清单>
    	<汽车>
    		<车牌 出产时间="2011年">奥迪</车牌>
    		<产地>北京</产地>
    		<单价>30</单价>
    	</汽车>
    </车辆清单>
    

    使用SAX解析该文件

    package web.java.xml.sax;
    
    import java.io.File;
    
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    
    import org.xml.sax.Attributes;
    import org.xml.sax.helpers.DefaultHandler;
    
    /**
     * 基于SAX解析XML文件
     * @author well
     *
     */
    public class Demo1 {
    	public static void main(String[] args) throws Exception {
    		//创建SAX解析器工厂
    		SAXParserFactory factory = SAXParserFactory.newInstance();
    		//创建SAX解析器
    		SAXParser saxParser = factory.newSAXParser();
    		File file = new File("src/web/java/xml/sax/car.xml");
    		//加载XML文件
    		saxParser.parse(file, new MyHanler());
    	}
    }
    
    //自定义SAX处理器
    class MyHanler extends DefaultHandler{
    	public void startElement(
    			String uri, 
    			String localName, 
    			String qName, 
    			Attributes attributes){
    		System.out.println("<"+qName+">");
    		System.out.println("有"+attributes.getLength()+"个属性");
    		System.out.println(attributes.getValue("出产时间"));
    	} 
    	public void endElement(
    			String uri, 
    			String localName, 
    			String qName){
    		System.out.println("</"+qName+">");
    	} 
    	public void characters(
    			char[] ch, 
    			int start, 
    			int length){
    		String content = new String(ch,start,length);
    		if(content.trim().length()>0){
    			System.out.println(content);
    		}
    	} 
    }



     

  • 相关阅读:
    面试模板|如何给面试官做自我介绍?
    端口被占用怎么办
    谈C#中编码Encoding
    使用SQLServer复制数据库
    服务器主要参数
    Java学习笔记封装Java Util包Base64方法
    线上问题的一次锁思考
    windows服务器远程桌面远程粘贴无效
    kubeadm部署报错
    获取kubeadmin部署时所需的images镜像脚本
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3112916.html
Copyright © 2020-2023  润新知