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

    }
    }

      

  • 相关阅读:
    bzoj1415 NOI2005聪聪和可可
    Tyvj1952 Easy
    poj2096 Collecting Bugs
    COGS 1489玩纸牌
    COGS1487 麻球繁衍
    cf 261B.Maxim and Restaurant
    cf 223B.Two Strings
    cf 609E.Minimum spanning tree for each edge
    cf 187B.AlgoRace
    cf 760B.Frodo and pillows
  • 原文地址:https://www.cnblogs.com/zfc2201/p/2140550.html
Copyright © 2011-2022 走看看