• 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));
    }

    }

    }

  • 相关阅读:
    std::async
    k最近邻算法(kNN)
    QNX下进程间通信
    ubuntu 18.04 安装破解pycharm professional 专业版
    安装scrapy出现Twisted依赖问题
    pytorchhub解决bug:.cache orchhubmaster.zip.....'另一个程序正在使用此文件,进程无法访问。'
    pytorchhub教程之安装pytorch或pytorchversion
    错误:java.lang.ClassNotFoundException:org.apache.commons.fileupload.FileItemFactory 解决方案
    Failed to start component [StandardEngine[Catalina].StandardHost[localhost].错误解决方案
    Javaweb之注解访问servlet和web.xml配置文件
  • 原文地址:https://www.cnblogs.com/hwgok/p/5761891.html
Copyright © 2020-2023  润新知