我从这里获得了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();
(Transformer
是的实例net.sf.saxon.Controller
。)
命令行上的技巧是指定“ -it:main”指向XSLT中的命名模板。这意味着您不必为源文件提供“ -s”标志。
问题再次从Java端开始。我在哪里/如何指定此“
-it:main”?这样会不会破坏其他不需要指定的XSLT?我是否必须将每个XSLT文件中的每个模板都命名为“
main”?给定Transformer.transform()的方法签名,我 必须 指定源文件,所以这不会破坏我在弄清楚该问题上所取得的所有进步吗?
编辑: 如果有人在寻找,我发现s9api隐藏在saxon9he.jar内。
您正在使用为XSLT 1.0设计的JAXP API。如果要使用XSLT
2.0功能,例如在命名模板上启动转换的功能,我建议您改用s9api接口,它为此目的而设计得更好。
但是,如果您有很多现有的JAXP代码并且不想重写它,通常可以通过将JAXP对象向下转换为基础的Saxon实现类来实现所需的功能。例如,您可以将JAXP
Transformer转换为net.sf.saxon.Controller,从而可以访问controller.setInitialTemplate();。涉及到调用transform()方法时,只需提供null作为Source参数。
顺便说一句,如果您正在编写需要2.0处理器的代码,那么我不会使用TransformerFactory.newInstance(),它将为您提供它在类路径中找到的任何旧XSLT处理器。请改用新的net.sf.saxon.TransformerFactoryImpl(),它的(a)功能更强大,(b)更快。
主要是从这个问题:XSLT:CSV(或平面文件,或纯文本)到XML 我这里有一个XSLT:http://andrewjwelch.com/code/xslt/csv/csv-to-xml_v2.html 它将CSV文件转换为XML文档。当与命令行上的以下命令一起使用时,它会这样做: java-jar saxon9he。jar-xsl:csv到xml。csv-it:main-o:output。xml
这是我想做的, 这是我的spend.csv文件: 从表视图: csv的表格视图 这是我想要的输出文件,名为spend.xml: 为了做到这一点,我在这里和那里找到了一些东西,并设法得到了这个: 此时,程序应该在终端中打印XML文件,但是; 遗憾的是,由于我的CSV文件中每个值都有双引号,我遇到了这个问题: java组织。w3c。多姆。DOMEException invalid_character_
我使用Saxon HE9.5作为XSLT处理器。由于源是一个大尺寸的XML,我需要最小化输出的大小。但是,使用Saxon他将在每个元素标记之间添加换行符。如下面的示例:
在本章中,我们将创建一个使用CSV Reader和XML Writer的简单Spring Batch应用程序。 阅读器 - 在应用程序中使用的阅读器是,用于从CSV文件中读取数据。 以下是在此应用程序中使用的输入CSV文件。 本文档包含指定详细信息的数据记录,如教程编号,教程作者,教程标题,提交日期,教程图标和教程说明。 完整的项目目录结构如下: 创建一个Maven项目,使用以下配置文件(pom.
我需要使用xquery解码转义的XML,也就是说,我有一个类似
所以我试图转换一个. xml数据源: 转换成. csv但以这种格式格式化 我有重复的元素,比如“title”、“description”等,我想将它们从完全垂直的xml格式中提取出来,并将每个元素分解成一个单独的列。 我发现了一个工具,我相信它确实可以做到这一点,但我不知道如何设置它 我有两个文件——a。蝙蝠和。罐子在内部。bat我们有以下默认代码: 我不知道该怎么修改这个。有谁能提供一些建议吗?