使用Java自带SAX工具解析XML

文章作者 100test 发表时间 2007:09:06 11:50:21
来源 100Test.Com百考试题网


studentInfo.xml




认的为leader
62358888
男,1987年生,硕士,现就读于中国农业大学


xxxxx
xxx学院
66666666
注视中,注释中

SAXHandler.java

package saxExample.

import java.util.HashMap.
import org.xml.sax.*.
import org.xml.sax.helpers.DefaultHandler.

/**
* 继承DefaultHandler类,用SAX实现对xml的遍历
* @author cuiweibing
* @since 2007.8.8
*/


public class SAXHandler
extends DefaultHandler {
//存放所有的节点(这里的节点等于原来的节点 编号)以及它所对应的值
private HashMap hashMap = new HashMap().
//目前的节点
private String currentElement = null.
//目前节点所对应的值
private String currentValue = null.
//用于节点编号(具体到person)
private static int i=-1.

public HashMap getHashMap() {
return hashMap.
}

public void characters(char[] ch, int start, int length) throws SAXException {
//取出目前节点对应的值
currentValue = new String(ch, start, length).
}

public void startElement(String uri, String localName, String qName,
Attributes attr) throws SAXException {
if(qName.equalsIgnoreCase("student")){
//currentElement= "".
}else if (qName.equalsIgnoreCase("person")){
i .
//currentElement= "".
String age=attr.getValue("age").
if(age!=null){
hashMap.put(qName "-age" i, age).
}else{
hashMap.put(qName "-age" i, "20").
}
}else if (qName.equalsIgnoreCase("college")){
currentElement= qName.
String leader=attr.getValue("leader").
if(leader!=null){
hashMap.put(qName "-leader" i, leader).
}else{
hashMap.put(qName "-leader" i, "leader").
}
}else{
currentElement= qName.
}

}

public void endElement(String uri, String localName, String qName) throws SAXException {
if (qName.equalsIgnoreCase("student")){
// hashMap.put(currentElement, currentValue).
}else if (qName.equalsIgnoreCase("person")){

}else{
currentElement =i.
hashMap.put(currentElement, currentValue).
}
}
}

TestSAXHandler.java

package saxExample.

import java.io.File.
import java.util.HashMap.
import javax.xml.parsers.SAXParserFactory.
import javax.xml.parsers.SAXParser.

/**
* 解析主类
* @author cuiweibing
* @since 2007.8.8
*/


public class TestSAXHandler {
public TestSAXHandler() {
}

public static void main(String[] args) {
try{
//初始化与解析
SAXHandler handler = new SAXHandler().
SAXParserFactory saxparserfactory = SAXParserFactory.newInstance().
SAXParser saxparser = saxparserfactory.newSAXParser().
saxparser.parse(new File("studentInfo.xml"), handler).

//解析完后获取解析信息
HashMap hashMap = handler.getHashMap().
System.out.println("姓名\t年龄\t学院\t学院领导\t电话\t\t备注").
for(int i=0.i int j=i/6.
System.out.print(hashMap.get("name" j) "\t").
System.out.print(hashMap.get("person-age" j) "\t").
System.out.print(hashMap.get("college" j) "\t").
System.out.print(hashMap.get("college-leader" j) "\t").
System.out.print(hashMap.get("telephone" j) "\t").
System.out.println(hashMap.get("notes" j) "\t").
}
}catch(Exception ex){
ex.printStackTrace().
}
}
}



相关文章


Ecli e插件管理小结
在Ecli e中构建备忘单
解决AIX配置tomcathtt 出现的问题
使用Java自带SAX工具解析XML
JAVA中用接口实现多继承和多态的方法
使用Ecli eV3.3保持代码干净
使用JBuilder2007开发Web应用程序
如何在JBuilder2007中配置MyEcli e
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛