java - 使用 Java 的 XSLT

标签 java xslt

我在 stackoverflow 的一篇帖子中发现了以下示例 -

import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;

public class TestMain {
    public static void main(String[] args) throws IOException, URISyntaxException, TransformerException {
        TransformerFactory factory = TransformerFactory.newInstance();
        Source xslt = new StreamSource(new File("transform.xslt"));
        Transformer transformer = factory.newTransformer(xslt);

        Source text = new StreamSource(new File("input.xml"));
        transformer.transform(text, new StreamResult(new File("output.xml")));
    }
}

在上面的示例中,我想使用输入作为字符串,输出作为字符串,并仅从文件中读取 xslt。可以实现这个目标吗?

最佳答案

查看带有 InputStreamStreamSource 构造函数 https://docs.oracle.com/javase/7/docs/api/javax/xml/transform/stream/StreamSource.html#StreamSource(java.io.InputStream)

您可以像这样从字符串创建输入:

    InputStream input = new ByteArrayInputStream("<your string input>".getBytes(StandardCharsets.UTF_8));
    Source text = new StreamSource(input);

并使用 StringWriterStreamResult 将输出作为 string:

    StringWriter outputWriter = new StringWriter();
    StreamResult result = new StreamResult( outputWriter );

    transformer.transform( text, result );  

    String outputAsString = outputWriter.getBuffer().toString(); 

关于java - 使用 Java 的 XSLT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42800632/

相关文章:

xml - xslt 匹配筛选结果集的前 x 项

java - 未使用 HttpUrlConnection 设置 Cookie

xml - DocBook-XML 和网络帮助

java - 退出 void 递归 Java 函数的更顺畅的方法

java - 有没有办法在 TestNG Webdriver 中运行单个 @Parameters 测试而不运行 xml 文件

javascript - XSLT:提供不同的数据 View

xslt - 如何获取 XSLT 中所有出现的相同元素的值?

javascript - 将用户输入传递到 XSL 样式表

java - 如何使用 jSTL 打印上下文参数?

java - 断言两个 java bean 是等价的