我有2个字符串,一个使用Java DOM接口构建的XML字符串,以及一个我要绑定到该XML文件的外部XSL文件。我尝试使用Java转换方法,但没有运气(这意味着我似乎无法在网上找到任何解决方案)。
如何获取XML文件和XSL文件并从中创建HTML字符串?
我要做的是将XML页面注入我的JSP页面。
只是为了澄清: 这是在servlet中完成的,而不是在JavaScript中完成的。
更多信息:
我在运行时创建XML作为字符串,我得到的XSL文件存储在服务器上,我想要做的是当用户点击某个XSL文件时,将XSL文件改变的XML显示给用户网站上的链接,我想将其嵌入到现有的JSP页面中(为了保持网站的标准外观)。
这是我到目前为止所得到的:
String convertedXML = new String();
TransformerFactory factory1 =
TransformerFactory.newInstance();
Source xsl = new StreamSource("my.xsl");
Result result11 = null;
try {
Templates template = factory1.newTemplates(xsl);
Transformer transformer1 = template.newTransformer();
Source xml = new StreamSource(xmlString);
result11 = new StreamResult(convertedXML);
transformer1.transform(xml, result11);
} catch(Exception e) {
System.out.println("Not Good");
}
catch之前的最后一行抛出下一个错误:
javax.xml.transform.TransformerException中:
java.io.FileNotFoundException:at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getOutputHandler(未知 来源)at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(未知 来源)at controllers.UserController.schedulePage(UserController.java:394)
答案 0 :(得分:1)
您可以将文件放入WEB-INF并尝试使用以下内容:
String path = "/WEB-INF/my.xsl";
ServletContext context = getServletContext();
InputStream xslIs = context.getResourceAsStream(filename);
Source xsl = new StreamSource(xslIs);
答案 1 :(得分:0)
我不知道您是否还有答案,但提供的代码(如上面的mzjn所示)显然不正确,因为提供给StreamSource的参数意味着系统标识符(文件定位器) )或文件,而不是将被覆盖的字符串。如果要将输出写入String,请使用以下结构:
StringWriter writer = new StringWriter();
result11 = new StreamResult(writer);
// do your transform...
transformer1.transform(xml, result11);
// now obtain your result's output...
String out = writer.toString();
希望有所帮助。