如何使用JDK在Java中使用XSLT处理器转换XML?
答案 0 :(得分:129)
以下是使用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 etc。
答案 1 :(得分:8)
Java标准库为XML解析提供了一个(XSLT)转换接口。请参阅API文档,了解类javax.xml.transform.Transformer
和javax.xml.transform.TransformerFactory
。
答案 2 :(得分:7)
我是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转换。
例如, here is :如何从命令行启动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\"]%
是名称 - 值列表外部参数(我几乎总是把它留空)。
答案 3 :(得分:5)
JAXP提供了一种独立于实现的XSLT转换方法。 Here is the tutorial让你入门如果您正在使用大型XSLT和/或使用多个XSLT,那么出于性能原因,还可以选择缓存已解析的XSLT模板。 This article解释了如何缓存xslt的