本文共 2159 字,大约阅读时间需要 7 分钟。
<学生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nonamespaceschemalocation="C:\Course30\student.xsd"> <学生 学号="1"> <姓名> 张三 姓名> <性别> 男 性别> <年龄> 20 年龄> 学生> <学生 学号="2"> <姓名> 李四 姓名> <性别> 女 性别> <年龄> 19 年龄> 学生> <学生 学号="3"> <姓名> 王五 姓名> <性别> 男 性别> <年龄> 21 年龄> 学生> 学生名册>
package cn.sisy.xml;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 Stackstack = new Stack (); private String name; private String gender; private String age; @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { //System.out.println(qName+"---"); 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(); } }}
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:noNamespaceSchemaLocation=C:\Course30\student.xsd
学号=1
姓名:张三
性别:男
年龄:20
学号=2
姓名:李四
性别:女
年龄:19
学号=3
姓名:王五
性别:男
年龄:21
SAX解析XML文档的机制是基于事件的,它将XML文档中每一个元素的开始,及一些空白,还有字符串等都看出是一个事件,这样每遇到一个事件就会触发一个方法的调用。|SAX的处理机制是基于事件的,是顺序的|
转载地址:http://xsbsi.baihongyu.com/