主要是从这个问题继续:XSLT:CSV(或平面文件或纯文本)到 XML
所以,我从这里得到了一个 XSLT:http://andrewjwelch.com/code/xslt/csv/csv-to-xml_v2.html
它将 CSV 文件转换为 XML 文档。当在命令行上与以下命令一起使用时,它会执行此操作:
java -jar saxon9he.jar -xsl:csv-to-xml.csv -it:main -o:output.xml
所以现在问题变成:我该如何在我的 Java 代码中做到这一点?
现在我的代码如下所示:
TransformerFactory transformerFactory = TransformerFactory.newInstance();
StreamSource xsltSource = new StreamSource(new File("location/of/csv-to-xml.xsl"));
Transformer transformer = transformerFactory.newTransformer(xsltSource);
StringWriter stringWriter = new StringWriter();
transformer.transform(documentSource, new StreamResult(stringWriter));
String transformedDocument = stringWriter.toString().trim();
(The Transformer
是一个实例net.sf.saxon.Controller
.)
命令行上的技巧是指定“-it:main”以直接指向 XSLT 中的命名模板。这意味着您不必为源文件提供“-s”标志。
Java 端又出现了问题。我将在哪里/如何指定这个“-it:main”?这样做不会破坏其他不需要指定的 XSLT 吗?我是否必须将每个 XSLT 文件中的每个模板命名为“main”?给定 Transformer.transform() 的方法签名,我have来指定源文件,那么这是否会破坏我在解决这个问题方面所取得的所有进展?
Edit:我发现 s9api 隐藏在 saxon9he.jar 中,如果有人在寻找的话。