Jak przekształcić XML za pomocą procesora XSLT w Javie?Przetwarzanie XSLT z Java?
Odpowiedz
Standardowa biblioteka Java udostępnia interfejs transformacji (XSLT) do analizowania XML. Zobacz dokumentację API dla klas javax.xml.transform.Transformer
i javax.xml.transform.TransformerFactory
.
Byłoby świetnie, gdyby można było podać link do Java 6 javadocs dla odpowiednich klas i prosty przykład kodu. – Ophidian
Jestem nowy w Xslt. Czy ktoś może mi przewodnika jak przetwarzać xslt z java?
Zależy to od używanego procesora XSLT opartego na języku Java. Każdy procesor XSLT ma swój własny interfejs API.
Na przykład Saxon 6.5.5 (dla XSLT 1.0) i Saxon 9.1.07 (dla XSLT 2.0) są napisane w Javie. Dokumentacja jest w http://www.saxonica.com/documentation/documentation.xml
Niemal wszystkie procesory XSLT posiada narzędzia wiersza polecenia, która nie wymaga pisania programu w celu wykonania transformacji XSLT.
Na przykład here is: jak rozpocząć Saxon transformację 9.x z wiersza poleceń.
Oto jak zawsze używam Saxon z linii poleceń:
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\"]%
gdzie %out%
to nazwa pliku wyjściowego, %xml%
jest plik xml, %xsl%
jest głównym pliku XSLT i %param[ name=\"value\"]%
jest listą parametrów wartości zewnętrznych (prawie zawsze pozostawiam to puste).
Istnieje standardowy interfejs API dla XSLT, zobacz pakiet 'javax.xml.transform'. Używałbym tego na rzecz dowolnej biblioteki stron trzecich z własnym API, chyba że istnieje jakiś nieodpowiedni powód do korzystania z konkretnej biblioteki strony trzeciej. – Jesper
@Jesper: Jesteśmy * szczęśliwi *, że korzystanie z API nie jest jedynym sposobem! Większość programistów XSLT używających dowolnego procesora XSLT to * nie * programiści Java. Byłaby to całkowicie niefortunna i nieuzasadniona strata, gdyby pozbawiono ich tak wielkich procesorów XSLT, jak Saxon czy Xalan.W rzeczywistości tworzenie opartych na Javie procesorów XSLT, które wymagały programowania w języku Java w celu ich użycia, nie byłoby w ogóle opłacalne. –
@Dimitre Ale pytanie dotyczyło przetwarzania XSLT w Javie; mówienie o innych sposobach (nie poprzez API) nie jest istotne. Jeśli masz zamiar zrobić to za pomocą jakiegoś interfejsu API, użyj standardowego interfejsu API, chyba że istnieje nieodparty powód do korzystania z niestandardowego interfejsu API. – Jesper
JAXP zapewnia niezależny od implementacji sposób pracy z transformacjami XSLT. Here is the tutorial, aby zacząć. Jeśli pracujesz z ogromnym XSLT i/lub pracujesz z wieloma XSLT, istnieje również opcja buforowania sparsowanych szablonów XSLT ze względu na wydajność. This article wyjaśnia jak buforować
Oto próbki XSLT za korzystanie Java API dla transformatora, jak @Raedwald powiedział:
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")));
}
}
Zbawiciel życia ... dziękuję bardzo !! –
Co za dobrze napisany przykład !! Dziękuję bardzo! – crazyim5
- 1. Przetwarzanie StAX z kanału Java NIO
- 2. Przetwarzanie źródła Java ze Scala
- 3. XSLT wezwanie java metoda instancji
- 4. Java, xml, XSLT: zapobiegaj walidacji DTD
- 5. Jak przekształcić wynik XSLT do obiektów Java
- 6. XSLT: Tworzenie mapy w XSLT
- 7. Uaktualnij procesor PHP XSLT do XSLT 2.0
- 8. Parse plik tekstowy z XSLT
- 9. zmianę nazw elementu z XSLT
- 10. wywołanie szablonu XSLT z parametrem
- 11. XSLT Format numer z przecinkiem
- 12. Alter pojedynczy atrybut z XSLT
- 13. xslt funkcja koalescencji z Saxonem
- 14. XSLT do generowania kolejnego skryptu XSLT
- 15. Tworzenie własnych funkcji XSLT
- 16. Grupowanie XSLT Rodzeństwo
- 17. przetwarzanie tekstu z dwóch plików
- 18. Przetwarzanie ramek wideo z Androidem
- 19. Przetwarzanie dużych plików xml
- 20. Przetwarzanie dla systemu Android, korzystanie z bibliotek
- 21. XSLT z Xalan vs. STX z Joost
- 22. Przetwarzanie adnotacji Java: skąd mam wiedzieć, czy runda jest ostatnia?
- 23. Przetwarzanie CSV
- 24. pomiń węzły za pomocą XSLT
- 25. Naturalne przetwarzanie języka w Javie?
- 26. przetwarzanie adnotacji wewnątrz obiektu body
- 27. Jakie narzędzia XSLT 2.0 istnieją?
- 28. XSLT - usuń białe znaki z szablonu
- 29. Jak zrobić wieloznaczne dopasowania z XSLT?
- 30. porównać dwa pliki xml z xslt?
Dobre pytanie, +1. Zobacz moją odpowiedź na wskazówki do dokumentacji Saxona i ważne zawiadomienie, że w wielu przypadkach nie trzeba znać Javy, aby użyć procesora XSLT opartego na Javie. –
[jcabi-xml] (http://xml.jcabi.com) może pomóc: http://www.yegor256.com/2015/02/02/xsl-transformations-in-java.html – yegor256
Ta odpowiedź ma precyzyjna odpowiedź, a dla nowo przybyłego nie jest oczywiste, jaka jest odpowiedź. To pytanie powinno zostać ponownie otwarte. – Raedwald