在jsp中使用SAX

在jsp中使用SAX
请先将xerces.jar文件放入web应用程序的WEB-INF/lib目录中,再编写处理xml文件的处理器如下:
package example;
import java.io.*; 
import java.util.Hashtable; 
import org.xml.sax.*; 
import org.xml.sax.helpers.*;

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 nspaceURI, String localName, String qName, Attributes atts) throws SAXException {
             // System.out.println("Starting element: " + localName);
     currentElement = localName; 
    } 

  public void characters(char[] ch, int start, int length) throws SAXException 
    { 
    currentValue = new String(ch, start, length); 
    } 

  public void endElement(String namespaceURI, String localName, String qualifiedName) throws SAXException {
            // System.out.println("Ending element: " + localName);
      if (currentElement.equals(localName)) 

      table.put(currentElement, currentValue); //将元素名和内容放入一个Hashtable

    } 

  } 

用下面的jsp代码测试:
<%@ page contentType="text/html; charset=GBK" %>

<HTML> 
<HEAD> 
<TITLE>剖析XML文件web.xml</TITLE> 
</HEAD> 
<BODY> 
<%@ page import="org.xml.sax.*" %> 
<%@ page import="org.xml.sax.helpers.XMLReaderFactory" %> 
<%@ page import="example.SAXHandler" %> 
<%@ page import="java.util.*" %> 

<% String fi=getServletContext().getRealPath("/")+"dir1\\dir6\\ex.xml";   
 XMLReader  parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
 SAXHandler handler = new SAXHandler(); 
 parser.setContentHandler(handler);
 parser.parse(fi); 
 Hashtable hashTable = handler.getTable(); 
 Enumeration e=hashTable.keys();
 while(e.hasMoreElements()){
     String key=(String)e.nextElement();
     out.println(key+": "+hashTable.get(key)+"<br>");
}
    
%>

ex.xml文件如下:
<?xml version="1.0" encoding="GB2312" standalone="no" ?>
<!DOCTYPE booklist [
<!ELEMENT booklist (book)+>
<!ELEMENT book     (书名,定价,读者交流信箱)>
<!ELEMENT 书名     (#PCDATA)>
<!ELEMENT 定价     (#PCDATA)>
<!ELEMENT 读者交流信箱 (#PCDATA)>
<!ENTITY  QA-email  "[email protected]">
]>

<booklist>
 <book>
   <书名>一起玩OfficeXP</书名>
   <定价>580元</定价>
   <读者交流信箱>&QA-email;</读者交流信箱>
 </book> 
</booklist>

你可能感兴趣的:(在jsp中使用SAX)