服务器端解析XML

老土豆T 2003-12-04 01:33:57
<%@ page contentType="text/html; charset=gb2312"%>
<%@ page import="org.w3c.dom.*" %>
<%@ page import="javax.xml.parsers.*"%>
<%@ page import="java.io.*"%>
<%@ page import="javax.xml.transform.*"%>
<%@ page import="javax.xml.transform.stream.*"%>
<%
StringReader reader=new StringReader("ZCML.xml");
StreamSource xml = new StreamSource(reader);

String path = application.getRealPath("/xtsd/zcml/xml/XmlRes");
System.out.println(path);
StreamSource xsl = new StreamSource(path+"/XMLSelTree.xsl");
StreamResult result = new StreamResult(out);
TransformerFactory tFactory = TransformerFactory.newInstance();
Templates templates = tFactory.newTemplates(xsl);
Transformer trans = templates.newTransformer();
trans.setOutputProperty(OutputKeys.ENCODING,"GB2312");
trans.setOutputProperty(OutputKeys.METHOD,"html");
trans.setOutputProperty(OutputKeys.VERSION,"4.0");
trans.transform(xml, result);

%>

抛出 一个 org.apache.jasper.JasperException: The output format must have a '{http://xml.apache.org/xalan}content-handler' property!


客户端解析是好的。。这个是什么异常,谢谢各位!
...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yrne 2003-12-05
  • 打赏
  • 举报
回复
老土豆T 2003-12-05
  • 打赏
  • 举报
回复
后来换了种方法, ,对xml进行逻辑分割。哈哈,居然解决了。
蝈蝈太阳 2003-12-04
  • 打赏
  • 举报
回复
up
yoken 2003-12-04
  • 打赏
  • 举报
回复
我用的是apache xalan
yoken 2003-12-04
  • 打赏
  • 举报
回复
用断点调试看出在哪行,另外我xslt如下
public class XmlTools {
private DocumentBuilder db;
private DocumentBuilder db2;
private TransformerFactory tf;
private Transformer transformer;
private DOMSource domSource;
private DOMSource domSource2;
private DOMResult domResult;
private StreamResult streamResult;

public XmlTools() throws Exception {
dbf = DocumentBuilderFactory.newInstance();
db = dbf.newDocumentBuilder();
dbf.setNamespaceAware(true);
db2 = dbf.newDocumentBuilder();
dbf.setNamespaceAware(false);

tf = TransformerFactory.newInstance();
transformer = tf.newTransformer();

transformer.setOutputProperty("encoding", "gb2312");

domSource = new DOMSource();
domSource2 = new DOMSource();
domResult = new DOMResult();
streamResult = new StreamResult();
}

public Document transform(Document xmlDoc, Document xslDoc) {
if (xmlDoc == null || xslDoc == null) {
return null;
}
Document resultDoc = null;
try {
domSource2.setNode(xslDoc);
Transformer transformer = tf.newTransformer(domSource2);

domSource.setNode(xmlDoc);
domResult.setNode(null);
transformer.transform(domSource, domResult);
resultDoc = (Document) domResult.getNode();
} catch (Exception e) {
e.printStackTrace();
resultDoc = null;
}
return resultDoc;
}
}

可将trans.setOutputProperty(OutputKeys.METHOD,"html");
trans.setOutputProperty(OutputKeys.VERSION,"4.0");放在xsl文件里:
<xsl:output method="html" version="4.0"/>
老土豆T 2003-12-04
  • 打赏
  • 举报
回复
yoken(雨泉)

还是不行。。。。忽忽。我在顶

81,092

社区成员

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

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