XML小练习:利用SAX解析XML文档(感觉不方便)

来源:互联网 发布:淘宝收藏宝贝链接 编辑:程序博客网 时间:2024/06/04 19:43
XML文档:
<?xml version="1.0" encoding="utf-8"?><学生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="student.xsd"><!-- 这不是演习,这不是演习 --><学生 学号="1"><姓名>张三</姓名><性别>男</性别><年龄>20</年龄></学生><学生 学号="2"><姓名>李四</姓名><性别>女</性别><年龄>19</年龄></学生><学生 学号="3"><姓名>王五</姓名><性别>男</性别><年龄>21</年龄></学生></学生名册>



=========================================================================================

JAVA实现:

package com.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 {SAXParserFactory factory = SAXParserFactory.newInstance();SAXParser parser = factory.newSAXParser();parser.parse(new File("student.xml"), new MyHandler2());}}class MyHandler2 extends DefaultHandler {private Stack<String> stack = new Stack<String>();private String name;private String sex;private String age;@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {stack.push(qName);// qName = Qualified Name 元素名称for (int i = 0; i < attributes.getLength(); i++) {String attrName = attributes.getQName(i);String attrValue = attributes.getValue(i);System.out.println(attrName + "=" + attrValue);}}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {String tag = stack.peek();if (tag.equals("姓名")) {name = new String(ch, start, length);} else if (tag.equals("性别")) {sex = new String(ch, start, length);} else if (tag.equals("年龄")) {age = new String(ch, start, length);}}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {stack.pop();if (qName.equals("学生")) {System.out.println("姓名:" + name);System.out.println("性别:" + sex);System.out.println("年龄:" + age);System.out.println();}}} 


0 0