服务器端解析XML
<%@ 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!
客户端解析是好的。。这个是什么异常,谢谢各位!
问题点数:200、回复次数:6Top
1 楼yoken(雨泉)回复于 2003-12-04 08:37:36 得分 100
用断点调试看出在哪行,另外我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"/>Top
2 楼yoken(雨泉)回复于 2003-12-04 08:38:55 得分 0
我用的是apache xalanTop
3 楼Fzgta(蝈蝈)回复于 2003-12-04 09:50:10 得分 50
upTop
4 楼totodo(土豆仙)回复于 2003-12-04 19:54:25 得分 0
yoken(雨泉)
还是不行。。。。忽忽。我在顶Top
5 楼totodo(土豆仙)回复于 2003-12-05 18:21:48 得分 0
后来换了种方法, ,对xml进行逻辑分割。哈哈,居然解决了。Top
6 楼yrne(不谈理想好多年)回复于 2003-12-05 18:51:33 得分 50
顶Top




