sax解析器为什么不支持名字空间?

jafan 2003-04-25 04:27:43
我用三种方法希望将xml文件转换成html文件并保存,但只成功了一种。三种方法代码有很大的相似性,但不知道后两种为什么失败。失败的那两种方法才是我真正需要的,请帮助我,谢、谢、谢谢了!!

一、成功的方法:在jbuilder6+jdk1.3.1下直接运行工程主类
jbuilder6工程环境中包含了Jaxp和Xalan两个库。代码如下:
--------------------------------
///////JAXPTransform.java:

//this program is used to transfrom xml format into html format with JAXP.
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;

import java.io.FileOutputStream;
import java.io.FileNotFoundException;

public class JAXPTransform {
public JAXPTransform() {
}

public static void main(String args[]) throws TransformerConfigurationException,TransformerException,FileNotFoundException {
String stylefile="C:\\Program Files\\servers\\gameinventory.xsl";
String xmlfile="C:\\Program Files\\servers\\gameinventory.xml";
String outfile="C:\\Program Files\\servers\\gameinventory_jaxp.html";

StreamSource stylesheet=new StreamSource(stylefile);
StreamSource xmlDoc=new StreamSource(xmlfile);
StreamResult result=new StreamResult(new FileOutputStream(outfile));

TransformerFactory factory=TransformerFactory.newInstance();
Transformer transFormer=factory.newTransformer(stylesheet) ;
transFormer.transform(xmlDoc,result) ;
}
}
-----------------------------------

二、失败的方法:将第一种方法的class作为javabean在jsp页面中应用
将第一种方法class中的main在jsp中调用产生错误。错误信息:
Namespace not supported by SAXParser


三、失败的方法:在jbuilder6+jdk1.3.1下通过servlet实现xml文件向html文件转换
在configure jdks中加入或不加入jdom-0.8b的jaxp、xerces、xalan库,而且库的顺序作了改变也一样失败。
错误消息:(SAX解析器不支持名字空间)
javax.servlet.ServletException: javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: org.xml.sax.SAXException: Namespace not supported by SAXParser
错误位置:
transFormer=factory.newTransformer(style) ;

servlet和xml以及Xsl文件代码如下,请大虾们帮我调试一下,非常感谢!!
----------------------------------------

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

//import org.w3c.dom.*;
import javax.xml.transform.*;
//import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import javax.xml.parsers.*;


public class transServlet extends HttpServlet {
static final private String CONTENT_TYPE = "text/html; charset=GBK";

///////////Initialize global variables
public void init() throws ServletException {
}

//////Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();

out.println("<html>");
out.println("<head><title>transServlet</title></head>");
out.println("<body>");

//String RootPath=request.getParameter("root");
String RootPath="C:\\Documents and Settings\\Administrator\\jbproject\\srvlet\\defaultroot\\";
out.println("root="+RootPath+"<br>");

String stylefile = RootPath+"trans\\gameinventory.xsl";
String xmlfile = RootPath+"trans\\gameinventory.xml";
String outfile = RootPath+"trans\\gameinventory_jaxp.html";

StreamSource style=new StreamSource(stylefile);
StreamSource xmlDoc=new StreamSource(xmlfile);
StreamResult result=new StreamResult(new FileOutputStream(outfile));
Transformer transFormer;

try{
TransformerFactory factory=TransformerFactory.newInstance();
transFormer=factory.newTransformer(style) ; ///********错误处*********
}catch(TransformerFactoryConfigurationError ne){
throw new ServletException(ne);
}catch(TransformerConfigurationException tce){
throw new ServletException(tce);
}

try{
transFormer.transform(xmlDoc,result) ;
}catch(TransformerException te){
throw new ServletException(te);
}

out.println("<p>The servlet has done. This is the reply.</p>");
out.println("</body></html>");
}

////////Clean up resources
public void destroy() {
}
}
----------------------------------------

//////////gameinventory.xsl:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">
<html>
<body>
<table border="1">
<tr><td>Name</td><td>Genre</td><td># Cd</td><td>Memory Cards</td><td>Description</td></tr>
<xsl:for-each select="games/game">
<tr>
<td><xsl:value-of select="@name"/></td>
<td><xsl:value-of select="@genre"/></td>
<td><xsl:value-of select="./cds"/></td>
<td><xsl:value-of select="./memory-cards"/></td>
<td><xsl:value-of select="./description"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
---------------------------------------

/////////gameinventory.xml:

<?xml version="1.0" encoding="GB2312"?>
<games>
<game name="XML Inbaders" genre="shooter">
<description>
Keep the inaders from building a wellformed document
</description>
<cds>1</cds>
<memory-cards>1</memory-cards>
</game>
<game name="A Node in the XPath" genre="rpg">
<description>
Gind the missing node
</description>
<cds>4</cds>
<memory-cards>2</memory-cards>
</game>
<game name="XPath Racers" genre="racing">
<description>
Race at breakneck speeds. Watch out for random predicates that seek to reduce your node set
</description>
<cds>1</cds>
<memory-cards>1</memory-cards>
</game>
</games>
---------------------------------------

...全文
39 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
jafan 2003-04-26
  • 打赏
  • 举报
回复
请版主们帮忙阿:(((

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧