当前位置: 首页 > 知识库问答 >
问题:

Java中的Saxon:用于CSV到XML的XSLT

舒仲渊
2023-03-14

主要是从这个问题: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

所以现在的问题是:我如何在我的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();

说明:变压器是net.sf.saxon.控制器的一个实例。

命令行的诀窍是指定“-it:main”指向XSLT中的命名模板。这意味着您不必为源文件提供“-s”标志。

问题再次从Java端开始。在哪里/如何指定此“-it:main”?这样做不会破坏其他不需要指定的XSLT吗?我需要将每个XSLT文件中的每个模板命名为“main”吗给出了变压器的方法签名。transform(),我必须指定源文件,所以这不是挫败了我在解决这个问题上取得的所有进展吗?

编辑:我发现s9api藏在萨克森9HE里面。jar,如果有人在找的话。

共有1个答案

漆雕皓轩
2023-03-14

您使用的是JAXP API,它是为XSLT1.0设计的。如果您想利用XSLT2.0的特性,比如在命名模板上启动转换的能力,我建议使用s9api接口,这是为此目的设计的更好的接口。

然而,如果您有很多现有的JAXP代码,并且不想重写它,那么通常可以通过将JAXP对象向下转换到底层的Saxon实现类来实现所需的功能。例如,可以将JAXP转换器转换为网络。旧金山。撒克逊人。控制器,这使您可以访问控制器。setInitialTemplate();在调用transform()方法时,只需提供null作为源参数。

顺便说一句,如果你写的代码需要2.0处理器,那么我不会使用TransformerFactory.new实例(),它会给你在类路径上找到的任何旧的XSLT处理器。相反,使用新的net.sf.saxon.TransformerFactoryImpl(),它(a)更健壮,(b)更快。

 类似资料:
  • 问题内容: 我从这里获得了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 现在,问题变成了: 如何在Ja

  • 这是我想做的, 这是我的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我们有以下默认代码: 我不知道该怎么修改这个。有谁能提供一些建议吗?