Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Łódź, 29 października 2012 roku
Technologie mgr inż. Tomasz Węgliński www:
2
WYKŁAD 8 XML & Java 2/15
3
Na następnym wykładzie…
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 Na następnym wykładzie… Wykład 8: XML & Java 3/15
4
Przykłady wykorzystane w wykładzie pochodzą z książki:
Literatura Przykłady wykorzystane w wykładzie pochodzą z książki: Źródło: Wykład 8: XML & Java 4/15
5
Java + XML = przenośny kod + przenośne dane
Dlaczego Java i XML? Zarówno Java jak i XML to języki darmowe i niezależne od platformy. Java + XML = przenośny kod + przenośne dane - Sun Microsystems (obecnie Oracle) - W drugiej połowie lat 90. IBM, Apache i inne firmy oraz organizacje opracowały szereg doskonałych bibliotek języka Java, które służyły do przetwarzania języka XML. Począwszy od wersji Java SE 1.4, firma Sun umieściła najważniejsze z nich w standardowej edycji platformy Java. Obecnie Java udostępnia szerszy wachlarz interfejsów, parserów, procesorów, struktur publikacji i narzędzi dla XML-a niż jakikolwiek inny język programowania. Wykład 8: XML & Java 5/15
6
Bardziej znane parsery, to: Apache Xerces, http://xml.apache.org
Narzędzia Bardziej znane parsery, to: Apache Xerces, IBM XML4J, James Clark's XP, OpenXML, Oracle XML Parser, Tim Bray's Lark and Larval, Najważniejsze procesory XML, to: Apache Xalan, James Clarks's XT, Lotus XSL Processor, Oracle XSL Processor, Keith Visco's XSL:P, Michalel Kay's SAXON, Wykład 8: XML & Java 6/15
7
W ramach projektu Apache XML powstało wiele inicjatyw
Projekt Apache W ramach projektu Apache XML powstało wiele inicjatyw mających na celu zaproponowanie nowych otwartych standardów opartych na XML. Projektami opartymi na Javie, są m.in.: Xerces - parser XML Xalan - procesor stylów XSLT Cocoon - publikacje webowe bazujące na XML FOP - procesor XSL-FO Xang - dynamiczne strony działające na serwerze w języku JavaScript SOAP - Simple Object Access Protocol Batik - narzędzie dla SVG (Scalable Vector Graphic) Crimson - parser XML, rozwinięcie parsera X SUN'a Wykład 8: XML & Java 7/15
8
Wczytywanie dokumentu XML
Wczytywanie XML Wczytywanie dokumentu XML Procedura: Aby wczytać dokument XML potrzebny jest obiekt klasy DocumentBuilder, który uzyskamy z fabryki DocumentBuilderFactory factory = DocumentBuilderFactory newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Wczytujemy plik z lokalnych zasobów: File f = Document doc = builder.parse(f); Lub też z adresu URL: URL u = Document doc = builder.parse(u); Lub też z dowolnego strumienia wejściowego: InputStream in = Document doc = builder.parse(in); Wykład 8: XML & Java 8/15
9
Wczytywanie dokumentu XML (c.d.)
Wczytywanie XML Wczytywanie dokumentu XML (c.d.) obiekt typu Document reprezentuje dokument XML za pomocą struktury drzewiastej utworzonej w pamięci. Składa się ona z obiektów, które implementują interfejs Node oraz jego interfejsy pochodne Wykład 8: XML & Java 9/15
10
Tworzenie dokumentu XML
Tworzenie XML Tworzenie dokumentu XML Procedura: Tworzenie drzewa DOM, generacja pustego dokumentu za pomocą metody newDocument klasy DocumentBuilder: Document doc = builder.newDocument(); Do tworzenia elementów dokumentu wykorzystamy metodę klasy Document: Element rootElement = doc.createElement(rootName) Element childElement = doc.createElement(childName); Do tworzenia węzłów tekstowych użyjemy f-kcji createTextNode: Text textNode = doc.createTextNode(textContents); Dodajemy elementy do korzenia i odpowiednich węzłów: doc.appendChild(rootElement); rootElement.appendChild(childElement); childElement.appendChild(textNode); Wykład 8: XML & Java 10/15
11
Tworzenie dokumentu XML (c.d.)
Tworzenie XML Tworzenie dokumentu XML (c.d.) Procedura: 4. Atrybuty elementów określamy korzystając z metody setAttribute klasy Element: rootElement.setAttribute(name, value); 5. Jeżeli chcemy dodać element DOCTYPE: Transformer t = TransformerFactory.newInstance().newTransformer(); t.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, systemIdentifier); t.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, publicIdentifier); t.setOutputProperty(OutputKeys.INDENT, "yes"); t.setOutputProperty(OutputKeys.METHOD, "xml"); t.setOutputProperty("{ "2"); t.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(file))); Wykład 8: XML & Java 11/15
12
Kontrola poprawności dokumentu XML względem jego DTD
Walidacja DTD Kontrola poprawności dokumentu XML względem jego DTD Procedura: Informujemy fabrykę DocumentBuilderFactory, aby wykorzystywała weryfikację poprawności dokumentów: factory.setValidating(true); Aby parser ignorował odstępy między elementami (umyślne tabulacje): factory.setIgnoringElementContentWhitespace(true); Instalujemy obiekt obsługi błędów, implementujący interfejs ErrorHandler, który zawiera następujące trzy metody: void warning(SAXParseException exception); void error(SAXParseException exception); void fatalError(SAXParseException exception); Obiekt obsługi błędów instalujemy za pomocą metody: builder.setErrorHandler(handler); Wykład 8: XML & Java 13/15
13
Walidacja DTD Dodatkowe metody: Wykład 8: XML & Java 14/15
14
Kontrola poprawności dokumentu XML względem XML Schema
Walidacja XML Schema Kontrola poprawności dokumentu XML względem XML Schema Procedura – taka sama jak przy DTD jednakże: Należy włączyć obsługę przestrzeni nazw nawet, gdy nie są one używane w dokumencie XML: factory.setNamespaceAware(true); Przygotowujemy fabrykę do obsługi schematów za pomocą następującego fragmentu kodu: final String JAXP_SCHEMA_LANGUAGE = " final String W3C_XML_SCHEMA = " factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA); Zobaczmy to w praktyce! Wykład 8: XML & Java 15/15
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.