gpt4 book ai didi

java - 数据流的 Saxon 实现

转载 作者:行者123 更新时间:2023-11-30 08:01:45 25 4
gpt4 key购买 nike

在下面的代码中,我使用 SAXON 通过 XSLT 修改 XML 文件

import java.io.File;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

public class SaxonImplementation {

public static void simpleTransform(String sourcePath, String xsltPath,
String resultDir) {
TransformerFactory tFactory = TransformerFactory.newInstance();
try {
Transformer transformer = tFactory
.newTransformer(new StreamSource(new File(xsltPath)));
transformer.transform(new StreamSource(new File(sourcePath)),
new StreamResult(new File(resultDir)));
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
System.setProperty("javax.xml.transform.TransformerFactory",
"net.sf.saxon.TransformerFactoryImpl");
simpleTransform("first.xml", "newxsl.xslt", "second.xml");
}
}

现在我不想修改 XML 文件,而是想修改 XML 字符串。我该如何在这里进行?transformer.transform 方法需要一个 XML 源文件和结果文件。如何提供 XML 字符串而不是文件并以 Stream 的形式获取结果?

最佳答案

您可以为 java.io.Reader 创建一个 StreamSource,因此将 XML 字符串包装在 StringReader 中,然后在 >StreamSource 并将其传递给转换器:

String xml = ...
transformer.transform(new StreamSource(new StringReader(xml)), ...

StreamResult 也是如此,您可以使用任何OutputStreamWriter 来创建StreamResult

这适用于任何 Trax 实现,而不仅仅是 Saxon。

关于java - 数据流的 Saxon 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37309107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com