zoukankan      html  css  js  c++  java
  • 用SAX解析XML

    编辑器加载中...

    package com.shengsiyuan.xml.sax;

    import java.io.File;
    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;

    public class SaxTest2
    {
    public static void main(String[] args) throws Exception
    {
    //step1: 获得SAX解析器工厂实例
    SAXParserFactory factory = SAXParserFactory.newInstance();

    //step2: 获得SAX解析器实例
    SAXParser parser = factory.newSAXParser();

    //step3: 开始进行解析
    parser.parse(new File("student.xml"), new MyHandler());
    }
    }

    class MyHandler2 extends DefaultHandler
    {
    private Stack<String> stack = new Stack<String>();

    private String name;

    private String gender;

    private String age;

    @Override
    public void startElement(String uri, String localName, String qName,
    Attributes attributes)
    throws SAXException
    {
    stack.push(qName);

    for(int i = 0; i < attributes.getLength(); i++)
    {
    String attrName
    = attributes.getQName(i);
    String attrValue
    = attributes.getValue(i);

    System.out.println(attrName
    + "=" + attrValue);
    }
    }

    @Override
    public void characters(char[] ch, int start, int length)
    throws SAXException
    {
    String tag
    = stack.peek();

    if("姓名".equals(tag))
    {
    name
    = new String(ch, start,length);
    }
    else if("性别".equals(tag))
    {
    gender
    = new String(ch, start, length);
    }
    else if("年龄".equals(tag))
    {
    age
    = new String(ch, start, length);
    }
    }

    @Override
    public void endElement(String uri, String localName, String qName)
    throws SAXException
    {
    stack.pop();
    //表示该元素已经解析完毕,需要从栈中弹出

    if("学生".equals(qName))
    {
    System.out.println(
    "姓名:" + name);
    System.out.println(
    "性别:" + gender);
    System.out.println(
    "年龄:" + age);

    System.out.println();
    }

    }
    }

      

  • 相关阅读:
    计算机世界中解决问题的三种技术手段
    应用程序池的经典模式与集成模式的区别
    sh文件的编译
    flex学习开始了
    com,ActiveX,Ole之间的关系学习总结
    "正在等待localhost。。”问题的解决
    一些感悟
    面向对象软件工程方法学实践【转】
    外连接在sqlserver和access之间的差异
    外连接在sqlserver和access之间的差异
  • 原文地址:https://www.cnblogs.com/zfc2201/p/2140550.html
Copyright © 2011-2022 走看看