如何使用Java 8在命令行上应用XSL转换?

时间:2016-11-09 15:39:23

标签: java xslt

我已经使用here所描述的内容在命令行上成功应用了XSL转换,但该示例似乎只适用于Java 6或更早版本。我不断看到一些例子说我应该使用com.sun.org.apache.xalan.internal.xslt.Process作为cli,但是当我尝试时我只能得到:Error: Main method not found in class com.sun.org.apache.xalan.internal.xslt.Process

有没有办法在Java 8中的命令行上应用XSL转换,还是只是删除了它?

我在空气环境中工作,所以任何涉及下载任何内容的解决方案都不会起作用。我只能访问JDK和JRE。

1 个答案:

答案 0 :(得分:0)

这是与您提到的方法不同的方法。除非您因某种原因被迫将XSLT预编译为Java类,否则您也可以使用它。这种方法的好处是您的代码与不同的JAXP XSLT实现无关。

对于加载XSLT并将其应用于XML文件的Java代码,请尝试以下操作

Sub scrape()
Dim htmldoc As MSHTML.IHTMLDocument 'Document object
Dim eleColtr As MSHTML.IHTMLElementCollection 'Element collection for tr tags
Dim eleColtd As MSHTML.IHTMLElementCollection 'Element collection for td tags
Dim eleRow As MSHTML.IHTMLElement 'Row elements
Dim eleCol As MSHTML.IHTMLElement 'Column elements
Dim ieURL As String 'URL

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True   
With ie
.
Shell "wscript.exe ""C:\Users\Ar\Desktop\vbscript.vbs"""
        Do Until .readyState = 4
DoEvents
Loop
Set htmldoc = ie.document
Set dar = htmldoc.frames("nav").document.getElementById("tab2_tab2flyover0text0")
dar.Click
Do Until .readyState = 4
DoEvents
Loop
Application.Wait (Now + TimeValue("00:00:02"))
.document.forms(0).submit
End With
End Sub

像往常一样从CLI运行它作为jar或类。如果您只是说JDK8将使用预先打包的默认XSLT处理器:

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(xsltAsDomSource);
transformer.transform(inputXmlSource, outputXmlResult);

但是,如果您希望使用特定的XSLT处理器进行更多控制,则可以使用" javax.xml.transform.TransformerFactory"参数,用于指定您选择的实现类。阅读JDK8 TransformerFactory API Doc以便更好地理解。