JSP解析XML文件一、配置环境    1、要想使用JSP解析XML文件,首先要先配置好一个运行环境。首先要找到Sun公司对于XML的Java API。可以在SUN的网站下载(文件名:jaxp-1_0_1.zip;文件大小:857,807 bytes)。
    不过现在很多服务器都有这个API,例如Resin v2.1在里面的lib目录下的jaxp.jar文件就可以使用。
    
    2、在CLASSPATH配置
    把X:\Resin\lib或者存放这个API文件的路径加到CLASSPATH里面(具体不细说了)。二、包含的文件    1、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);
    }
 
    2、XmlTest.jsp源代码<HTML>
<HEAD>
<TITLE>JSP test</TITLE>
</HEAD>
<BODY>
<%@ 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("/myjsp/item.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 cfgTable = handler.getTable();
out.println("<TABLE><CAPTION>XML ITEM对象</CAPTION>");
out.println("<TR><TD>ID</TD>" +
  "<TD>" +
  (String)cfgTable.get(new String("ID")) + "</TD></TR>");
out.println("<TR><TD>DESCRIPTION</TD>" +
  "<TD>" +
  (String)cfgTable.get(new String("DESCRIPTION"))+"</TD></TR>");
out.println("<TR><TD>PRICE</TD>" +
  "<TD>" +
  (String)cfgTable.get(new String("PRICE")) + "</TD></TR>");
out.println("<TR><TD>QUANTITY</TD>" +
  "<TD>" +
  (String)cfgTable.get(new String("QUANTITY")) + "</TD></TR>");
out.println("</TABLE>");
%>
</BODY>
</HTML>    3、item.xml源代码<?xml version="1.0"?>
<INFO>
   <NAME>ICECH</NAME>
   <SEX>MALE</SEX>
   <AGE>26</AGE>
</INFO>三、编译运行    1、编译SAXHandler.java文件
    将SAXHandler.class放到WEB-INF\classes目录。    2、运行XmlTest.jsp就能看到XML文件显示的内容了。四、扩展程序    1、XmlFile.html源代码<HTML>
<HEAD>
<TITLE>XML</TITLE>
</HEAD>
<BODY>
<FORM ACTION="XmlFile.jsp" METHOD="post">
XML:<INPUT TYPE="TEXT" NAME="name" SIZE=20>
<INPUT TYPE="SUBMIT" NAME="submit" VALUE="ok">
</FORM>
</BODY>
</HTML>    2、XmlFile.jsp源代码<HTML>
<HEAD>
<TITLE>XML</TITLE>
</HEAD>
<BODY>
<%@ page 
         contentType="text/html;charset=gb2312" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ 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" %>
<%
String name = request.getParameter("name");
File file = new File("/myjsp/"+name);
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("<TABLE BORDER=2><CAPTION>XML对象</CAPTION>");
Enumeration enum = hashTable.keys();
while (enum.hasMoreElements())
  {
  String id = (String)enum.nextElement();
  String value = (String)hashTable.get(id);
  out.println("<TR><TD>" + id + "</TD>" +
                   "<TD>" + value + "</TD></TR>");
  }
out.println("</TABLE>");
%>
</BODY>
</HTML>    3、SAXHandler.java源文件    同上    4、item.xml源代码    同上    运行方式也一样。

解决方案 »

  1.   

    TO——icech(燕翩跹), 谢谢你的指点。可是你根本没有看我的问题,上次我问到关于XML的问题,你也是把上面那一段贴给我了,我给了你很多分吆,这次麻烦看看问题嘛!!!
      

  2.   

    TO——icech(燕翩跹), 谢谢你的指点。可是你根本没有看我的问题,上次我问到关于XML的问题,你也是把上面那一段贴给我了,我给了你很多分吆,这次麻烦看看问题嘛!!!
      

  3.   

    我只是简单的试过,好象是不同的包有不同的用途,你要在classpath里分别设置。
    如果你用的是jdk1.4那么jaxp己经在里面了,如果是1.3就要重新设。
      

  4.   

    import javax.xml.parsers.*;
    import org.xml.sax.*;public class JAXPSAX{
      

  5.   

    先写一段
    import javax.xml.parsers.*;
    import org.xml.sax.*;public class JAXPSAX{
       public void parsing(){
          SAXParser parser;
          SAXparserFactory factory=SAXParserFactory.newInstance();
          HandlerBase myHandler=new MyHandlerBase();//自己写的处理器
          try{
                 parser=factory.newSAXParser();
                 parser.parse(myURI,myHandler);
           }catch(Exception e){}
        }
    }