Diapositiva 1

Download Report

Transcript Diapositiva 1

Łódź, 12 listopada 2012 roku
Technologie
mgr inż. Tomasz Węgliński
email: [email protected]
www: http://www.tweglinski.pl
WYKŁAD 9
XML & Java (c.d.)
2/15
Plan wykładu
 Na wykładzie omówimy sobie następujące zagadnienia:
 Wczytywanie dokumentów XML
 Parsowanie XML za pomocą DOM i SAX
 Tworzenie dokumentów XML
 Kontrola poprawności dokumentów XML
 Wyszukiwanie informacji i XPath
 Transformacje XSL
 Serializacja / Deserializacja obiektów do/z postaci XML
(biblioteka XStream)
Wykład 9: XML & Java
3/15
Java & XPath
XPath (ang. XML Path Language - język ścieżek XML)
-- jest to język służący do adresowania części dokumentu XML.
Dzięki XPath wyszukanie interesującej informacji w dokumencie XML
nie wymaga od nas skomplikowanego przeglądania węzłów drzewa
DOM.
Dla przykładu:
Nazwę użytkownika możemy pobrać z poniższego pliku za pomocą
następującego wyrażenia XPath:
/configuration/database/username
Wykład 9: XML & Java
4/15
Java & XPath
 Rozwiązanie przedstawione na poniższym slajdzie jest dużo prostsze
niż z użyciem samego DOM, które wymaga:
1)
2)
3)
4)
5)
6)
Pobrania węzła dokumentu
Przeglądania jego węzłów podrzędnych
Zlokalizowania jego elementu database
Pobrania pierwszego elementu podrzędnego – username
Pobrania węzła text
Pobrania danych węzła text
Wykład 9: XML & Java
5/15
Java & XPath
 Java SE dostarcza interfejsu programowego umożliwiającego
posługiwanie się wyrażeniem XPath za pomocą fabryki
XPathFactory
Procedura:
1. Tworzymy instancję XPathFactory
XPathFactory xpfactory =
XPathFactory.newInstance(); path =
xpfactory.newXPath();
2. Wartość wyrażenia XPath wyznaczamy wykorzystując metodę
evaluate:
a) Dla zawartości tekstowej:
String username =
path.evaluate("/configuration/database/username",
doc);
b) Dla zbioru węzłów:
NodeList nodes = (NodeList)
path.evaluate("/gridbag/row", doc,
XPathConstants.NODESET);
Wykład 9: XML & Java
6/15
Java & XPath
Procedura c.d.:
c) Dla pojedynczego węzła:
Node node = (Node)
path.evaluate("/gridbag/row[1]", doc,
XPathConstants.NODE);
d) Dla wartości liczbowej:
int count = ((Number)
path.evaluate("count(/gridbag/row)", doc,
XPathConstants.NUMBER)).intValue();
e) Wyszukiwanie możemy także rozpocząć od dowolnego węzła
(nie tylko od korzenia drzewa):
result = path.evaluate(expression, node);
Wykład 9: XML & Java
7/15
Java & XPath
 Wyszukiwanie informacji za pomocą XPath
Zobaczmy to w praktyce!
Wykład 9: XML & Java
8/15
Java & XSL
 Transformacje XSL stosowane są w celu przekształcania danych
pomiędzy różnymi formatami danych XML wykorzystywanych przez
aplikację, na postać czytelną dla użytkownika aplikacji.
Wynik transformacji XSL przedstawiany jest w postaci dokumentu
HTML, innego dokumentu XML lub dokumentu tekstowego.
Wykład 9: XML & Java
9/15
Java & XSL
 Przykład tranformacji XSL dokumentu XML do postaci dokumentu
tekstowego – dokument XML:
Wykład 9: XML & Java
10/15
Java & XSL
 Transformacje XSL w języku Java
Procedura:
Dla danej specyfikacji stylu tworzymy fabrykę przekształcenia, z której
pobieramy obiekt reprezentujący przekształcenie i zlecamy mu jego
wykonanie:
File styleSheet = new File(filename);
StreamSource styleSource = new StreamSource(styleSheet);
Transformer t = TransformerFactory.newInstance()
.newTransformer(styleSource);
t.transform(source, result);
 Parametrami metody transform są obiekty implementujące
interfejsy Source i Result.
 Dostępne są po trzy implementacje interfejsu Source i Result:
 DOMSource | DOMResult
 SAXSource | SAXResult
 StreamSource | StreamSource
Wykład 9: XML & Java
12/15
TXT -> XML
 Tworzenie dokumentu XML z pliku tekstowego za pomocą
parsera SAX
Przykład:
(http://docs.oracle.com/javase/1.4.2/docs/api/org/xml/sax/ContentHandler.html)
Wykład 9: XML & Java
14/15
XStream
 Biblioteka XStream (http://xstream.codehaus.org/)
-- to bardzo prosta biblioteka Javy, służąca do deserializacji oraz
serializacji obiektów do postaci XML.
 Tutorial:
http://www.ibm.com/developerworks/xml/library/x-xstream/
Zobaczmy to w praktyce!
Wykład 9: XML & Java
15/15