java SAXParserFactory解析xml文件

来源:互联网 发布:穆勒plc手动编程方法 编辑:程序博客网 时间:2024/06/01 15:24

申明:个人学习总结,经供参考,欢迎批评指正与交流

<pre name="code" class="java">/** * */package com.XXX.saxparserxml;import java.io.File;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import com.XXX.utils.Constant;/** * @author  */public class ParserXML {    private static SAXParser mParser;    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        saxParserXml();    }    /**     * SAX解析XML文件采用事件驱动的方式进行,SAX是逐行扫描文件,     * 遇到符合条件的设定条件后就会触发特定的事件,回调你写好的事件处理程序(Hanlder)     */    private static void saxParserXml() {        // TODO Auto-generated method stub        try {            //1.获取sax解析器的工厂对象            SAXParserFactory mParserFactory = SAXParserFactory.newInstance();            // 2.通过工厂对象 mParserFactory创建解析器对象mParser            mParser = mParserFactory.newSAXParser();            //3.创建事件处理器对象mHanlder            Hanlder mHanlder = new Hanlder();            //4.利用指定处理器解析指定文件            mParser.parse(Constant.PARSER_XML_DIR + File.separator + "test.xml", mHanlder);        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

Hanlder类

<pre name="code" class="java">/** * */package com.XXX.saxparserxml;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;import com.XXX.dbclass.DateBaseClass;/** * @author  */public class Hanlder extends DefaultHandler {    private boolean isTest = false;    public Hanlder() {        // TODO Auto-generated constructor stub    }    public Hanlder(DateBaseClass dbc) {        // TODO Auto-generated constructor stub    }    /**     * 开始节点,根据开始节点名建立相关条件或创建相关对象     * */    public void startElement(String uri, String localName, String qName,            Attributes attributes) throws SAXException {        // TODO Auto-generated method stub        super.startElement(uri, localName, qName, attributes);        if ("tests".equals(qName)) {            isTest = true;        } else if ("test".equals(qName)){            System.out.println("parser test start");        }    }    /**     * 结束节点,根据结束节点完成相关动作     * */    public void endElement(String uri, String localName, String qName)            throws SAXException {        // TODO Auto-generated method stub        super.endElement(uri, localName, qName);        if ("tests".equals(qName)) {            isTest = false;        }        System.out.println("parser test end");    }    /**     * 节点间的文字信息,可通过stringbuffer收集每一个节点的文字信息,     * 在endElement中清空stringbuffer,收集下一个     * */    public void characters(char[] ch, int start, int length)            throws SAXException {        // TODO Auto-generated method stub        super.characters(ch, start, length);        String content = new String(ch, start, length);        System.out.println("content = " + content);    }}


0 0
原创粉丝点击