关闭

使用SAX实现XML文件解析

1018人阅读 评论(0) 收藏 举报

第一个文件: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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10238次
    • 积分:153
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:6篇
    • 译文:0篇
    • 评论:1条
    文章分类