Wie transformiere ich XML mit dem XSLT-Prozessor in Java mithilfe des JDK?
Wie transformiere ich XML mit dem XSLT-Prozessor in Java mithilfe des JDK?
Antworten:
Hier ist ein Beispiel für die Verwendung von Java API für Transformatoren, wie @Raedwald sagte:
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")));
}
}
Der Eingang kann auch aus einer Schnur oder DOMSource sein, kann der Ausgang sein , um einen DOMSource etc .
Ich bin neu bei xslt. Kann mir jemand zeigen, wie man mit Java xslt verarbeitet?
Dies hängt davon ab, welchen Java-basierten XSLT-Prozessor Sie verwenden. Jeder XSLT-Prozessor verfügt über eine eigene API.
Beispielsweise sind Saxon 6.5.5 (für XSLT 1.0) und Saxon 9.1.07 (für XSLT 2.0) in Java geschrieben. Die Dokumentation finden Sie unter http://www.saxonica.com/documentation/documentation.xml
Fast alle XSLT-Prozessoren verfügen über ein Befehlszeilenprogramm , für das kein Programm geschrieben werden muss, um eine XSLT-Umwandlung durchzuführen.
Hier ist zum Beispiel : So starten Sie eine Saxon 9.x-Transformation über die Befehlszeile .
So benutze ich Saxon immer über die Kommandozeile :
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\"]%
Wo %out%
ist der Name der Ausgabedatei, %xml%
ist die XML-Datei, %xsl%
ist die primäre xslt-Datei und %param[ name=\"value\"]%
ist eine Name-Wert-Liste der externen Parameter (ich lasse diese fast immer leer).
javax.xml.transform
. Ich würde dies zugunsten einer Drittanbieter-Bibliothek mit eigener API verwenden, es sei denn, es gibt einen zwingenden Grund für die Verwendung einer bestimmten Drittanbieter-Bibliothek.
Die Java-Standardbibliothek bietet eine (XSLT) -Transformationsschnittstelle für die XML-Analyse. Siehe die API-Dokumentation für die Klassen javax.xml.transform.Transformer
und javax.xml.transform.TransformerFactory
.
JAXP bietet eine implementierungsunabhängige Möglichkeit, mit XSLT-Transformationen zu arbeiten. Hier ist das Tutorial , um Ihnen den Einstieg zu erleichtern. Wenn Sie mit großen XSLTs und / oder mit mehreren XSLTs arbeiten, besteht aus Leistungsgründen auch die Möglichkeit, die analysierten XSLT-Vorlagen zwischenzuspeichern. Dieser Artikel erklärt, wie man xslt's zwischenspeichert