我一直在开发一个将表格内容打印为 XML 的 Web 服务 - 我使用 WebRowSet 来执行此操作。
response.setContentType("text/xml");
WebRowSet webRowSet = new WebRowSetImpl();
webRowSet.writeXml(resultSet, response.getWriter());
(HttpServletResponse 响应)
虽然这些工作正常,但我就是不知道如何将样式表应用到 XML。我尝试使用变压器来做到这一点。
webRowSet.writeXml(resultSet, OutputStream);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(new StreamSource("file.xsl"));
transformer.transform(new StreamSource(InputStream),
new StreamResult(response.getWriter()));
我无法理解 writeXml 中的 OutputStream 和 StreamSource 中的 InputStream 是什么。 (我不想将数据保存在文件中)
I've found a question that might be related?
如果能解释我如何解决这个问题,我将非常感激。
最佳答案
看起来您真正想要做的是从结果集中获取部分/所有字段并将其写入已知的输出格式。
根据要输出的数据的复杂性,除了使用 XSL,您还可以将结果集中的数据获取到 Java 的 Collection 对象中,并将该数据传递给 Velocity 或 FreeMarker 等模板引擎。
您的 Velocity/Freemarker 模板将(或多或少)采用您预期输出的格式,因此更容易维护。
不利的一面是,如果结果集中的数据相当丰富,您的数据结构将变得复杂,并且您需要在将数据传递到模板引擎之前创建 JavaBean 来表示数据。这将需要更多工作,但您需要在编写和维护 XSL 的工作量之间取得平衡。
关于java - 尝试在java中将xslt应用于xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11774587/