获取XML文件和XSL文件并从中创建HTML字符串?

时间:2011-07-26 16:19:42

标签: java html xml xslt servlets

我有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)

2 个答案:

答案 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();

希望有所帮助。