编程用 JAVA 解析 XML 的方式

答:用 SAX 方式解析 XML,XML 文件如下:

  
  
 王小明 
 信息学院 
 6258113 
 男,1955 年生,博士,95 年调入海南大学 
  

事件回调类 SAXHandler.java :

 import java.io.*; 
 import java.util.Hashtable; 
 import org.xml.sax.*; 
 public class SAXHandler extends HandlerBase{ 
 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 tag, AttributeList attrs) 
 throws SAXException{ 
 currentElement = tag; 
 } 
 public void characters(char[] ch, int start, int length) 
 throws SAXException{ 
 currentValue = new String(ch, start, length); 
 } 
 public void endElement(String name) throws SAXException{ 
 if (currentElement.equals(name)) 
 table.put(currentElement, currentValue); 
 } 
 } 

JSP 内容显示源码,SaxXml.jsp:

  
  
 剖析 XML 文件 people.xml 
  
  
 <%@ page errorPage="ErrPage.jsp" 
 contentType="text/html;charset=GB2312" %> 
 <%@ page import="java.io.*" %> 
 <%@ page import="java.util.Hashtable" %> 
 <%@ page import="org.w3c.dom.*" %> 
 <%@ page import="org.xml.sax.*" %> 
 <%@ page import="javax.xml.parsers.SAXParserFactory" %> 
 <%@ page import="javax.xml.parsers.SAXParser" %> 
 <%@ page import="SAXHandler" %> 
 <% 
 File file = new File("c:\people.xml"); 
 FileReader reader = new FileReader(file); 
 Parser parser; 
 SAXParserFactory spf = SAXParserFactory.newInstance(); 
 SAXParser sp = spf.newSAXParser(); 
 SAXHandler handler = new SAXHandler(); 
 sp.parse(new InputSource(reader), handler); 
 Hashtable hashTable = handler.getTable(); 
 out.println(""); 
 out.println("" + ""); 
 out.println("" + ""); 
 out.println("" + ""); 
 out.println("" + ""); 
 out.println("
" + "教师信息表
姓名" + (String)hashTable.get(new String("name")) + "
学院" + (String)hashTable.get(new String("college")) +"
电话" + (String)hashTable.get(new String("telephone")) + "
备注" + (String)hashTable.get(new String("notes")) + "
"); %>