如何在Java中使用JDK和XSLT处理器转换XML?
以下是使用Java API进行转换的示例,正如@Raedwald所说:
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")));
}
}
输入也可以来自字符串或DOMSource,输出可以传输到DOMSource等。
我是 XSLT 的新手,有人能指导我如何用 Java 进行 XSLT 处理吗?
这取决于你使用的基于 Java 的 XSLT 处理器。每个 XSLT 处理器都有自己的 API。
例如,Saxon 6.5.5(用于 XSLT 1.0)和 Saxon 9.1.07(用于 XSLT 2.0)是用 Java 编写的。文档在http://www.saxonica.com/documentation/documentation.xml。
几乎所有的 XSLT 处理器都有一个命令行工具,不需要编写程序就可以执行 XSLT 转换。
例如,这里是:如何从命令行启动 Saxon 9.x 转换。
以下是我经常在命令行中使用 Saxon 的方式:
java -Xms2048M -Xmx10000M -jar
C:\xml\Parsers\Saxon\Ver.9.1.0.7\J\saxon9.jar
-t -repeat:1 -o %out% %xml% %xsl% %param[ name=\"value\"]%
其中%out%
是输出文件的名称,%xml%
是xml文件,%xsl%
是主要的xslt文件,%param[ name=\"value\"]%
是外部参数的名称-值列表(我几乎总是将其留空)。
javax.xml.transform
包。除非有使用特定第三方库的强烈理由,否则我会使用它来代替任何具有自己 API 的第三方库。 - JesperJava标准库提供了一个XML解析的(XSLT)转换接口。请查看API文档中的javax.xml.transform.Transformer
类和javax.xml.transform.TransformerFactory
类。