使用SAX实现XML文件解析

第一个文件:SAXHandler.java

功能:SAX事件解析

import java.util.Hashtable;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;


public class SAXHandler extends DefaultHandler 
{
 private Hashtable table = new Hashtable();
 private String currentElement = null;
 private String currentValue = null;
 public void setTable(Hashtable table)
 {
  this.table = table;
 }
 public Hashtable getTable()
 {
  return table;
 }

 public void startElement(String uri, String localName, String qName, Attributes attributes)
 throws SAXException
 {
  currentElement = qName;
 }
 public void characters(char[] ch, int start, int length)
 throws SAXException
 {
  currentValue = new String(ch, start, length);
 }
 public void endElement(String uri, String localName, String qName)
 throws SAXException
 {
  if (currentElement.equals(qName))
   table.put(currentElement, currentValue);
 }
}

 

第二个文件:SAXHandlerTest.java

功能:XML文件解析示例


import java.util.Hashtable;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;


 
public class SAXHandlerTest {
 public static void main(String[] args) {
  
   
  String file = "c://people.xml";
  SAXParserFactory spf = SAXParserFactory.newInstance();
  SAXParser sp = null;
  try {
   sp = spf.newSAXParser();
  }
  catch (Exception ex) {
   ex.printStackTrace();
  }
  SAXHandler handler = new SAXHandler();
  try {
   sp.parse(file, handler);
  }
  catch (Exception ex) {
   ex.printStackTrace();
  }
  
  Hashtable hashTable = handler.getTable();
  System.out.println("<TABLE BORDER=2><CAPTION>教师信息表</CAPTION>");
  System.out.println("<TR><TD>姓名</TD>" + "<TD>" +
  (String)hashTable.get(new String("name")) + "</TD></TR>");
  System.out.println("<TR><TD>学院</TD>" + "<TD>" +
  (String)hashTable.get(new String("college"))+"</TD></TR>");
  System.out.println("<TR><TD>电话</TD>" + "<TD>" +
  (String)hashTable.get(new String("telephone")) + "</TD></TR>");
  System.out.println("<TR><TD>备注</TD>" + "<TD>" +
  (String)hashTable.get(new String("notes")) + "</TD></TR>");
  System.out.println("</TABLE>");

 }
}

第三个文件:people.xml

功能:例子XML文件

<?xml version="1.0" encoding="gb2312"?>
<person>
<name>王小明</name>
<college>信息学院</college>
<telephone>6258113</telephone>
<notes>男,1955年生,博士,95年调入海南大学</notes>
</person>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值