• XML解析的二种方法之Sax解析


    package com.huawei.xml;

    import java.io.InputStream;
    import java.util.Stack;

    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;

    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;


    /**
    * @author Administrator
    *
    * 测试 sax解析
    *
    */
    public class TestSAXParser {

    public static void main(String[] args) throws Exception{
    /**
    * 得到工厂
    *
    * 用工厂得到解析器
    *
    * 用解析器去解析文件 并注册一个处理器
    *
    */

    //得到工厂
    SAXParserFactory factory = SAXParserFactory.newInstance();
    //得到解析器
    SAXParser saxParser = factory.newSAXParser();

    InputStream in = TestSAXParser.class.getClassLoader().getResourceAsStream("com/cdsxt/resources/Users.xml");

    saxParser.parse(in,new Handler());
    }
    }

    class Handler extends DefaultHandler{

    /**
    * 首先是文档开始 startDocument
    * 元素开始startElement
    * 字符数据characters
    * 元素结束endElement
    * 文档结束endDocument
    */

    //构建一个存储器
    Stack<String> names = new Stack<String>();

    @Override
    public void startDocument() throws SAXException {
    //System.out.println("Handler.startDocument()");
    }

    @Override
    public void endDocument() throws SAXException {
    //System.out.println("Handler.endDocument()");
    }

    @Override
    public void startElement(String uri, String localName, String qName,
    Attributes attributes) throws SAXException {
    //System.out.println("Handler.startElement()");
    /*System.out.println("----------------");
    System.out.println("uri:"+uri);
    System.out.println("localName:"+localName);
    System.out.println("attributes:"+attributes.getValue("id"));
    System.out.println("----------------");*/
    //System.out.println("qName:"+qName);
    names.push(qName);
    }

    @Override
    public void endElement(String uri, String localName, String qName)
    throws SAXException {
    //System.out.println("Handler.endElement()");
    names.pop();
    }

    @Override
    public void characters(char[] ch, int start, int length)
    throws SAXException {
    //System.out.println("Handler.characters()");

    if(names.peek().equals("username")){
    System.out.println(new String(ch,start,length));
    }

    }

    }

  • 相关阅读:
    c++类模板与友元 安静点
    c++类模板分文件编写 安静点
    Junit4测试
    04月09日总结
    How to create a Android SO library dinamically loaded in your FMX projects? by Emailx45
    linux内核监控调试相关好用模块汇总
    软件质量管理
    操作系统——第四章课后习题答案02
    分页存储管理方式与分段存储管理方式
    Junit4测试
  • 原文地址:https://www.cnblogs.com/hwgok/p/5761891.html
Copyright © 2020-2023  润新知