Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Technologie mgr inż. Tomasz Węgliński www:

Podobne prezentacje


Prezentacja na temat: "Technologie mgr inż. Tomasz Węgliński www:"— Zapis prezentacji:

1 Technologie mgr inż. Tomasz Węgliński www: Łódź, 29 października 2012 roku

2 WYKŁAD 8 XML & Java 2/15

3 Wykład 8: XML & Java 3/15 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 Plan wykładu Na następnym wykładzie…

4 Wykład 8: XML & Java Literatura 4/15 Przykłady wykorzystane w wykładzie pochodzą z książki: Źródło:

5 Wykład 8: XML & Java Dlaczego Java i XML? Zarówno Java jak i XML to języki darmowe i niezależne od platformy. 5/15 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. Java + XML = przenośny kod + przenośne dane - Sun Microsystems (obecnie Oracle) -

6 Wykład 8: XML & Java Narzędzia 6/15 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,www.jclark.com Lotus XSL Processor, Oracle XSL Processor, Keith Visco's XSL:P, Michalel Kay's SAXON,

7 Wykład 8: XML & Java Projekt Apache 7/15 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

8 Wykład 8: XML & Java Wczytywanie XML 8/15 Wczytywanie dokumentu XML Procedura: 1.Aby wczytać dokument XML potrzebny jest obiekt klasy DocumentBuilder, który uzyskamy z fabryki DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); 2.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);

9 Wykład 8: XML & Java Wczytywanie XML 9/15 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

10 Wykład 8: XML & Java Tworzenie XML 10/15 Tworzenie dokumentu XML Procedura: 1.Tworzenie drzewa DOM, generacja pustego dokumentu za pomocą metody newDocument klasy DocumentBuilder : Document doc = builder.newDocument(); 2.Do tworzenia elementów dokumentu wykorzystamy metodę klasy Document : Element rootElement = doc.createElement(rootName) Element childElement = doc.createElement(childName); 3.Do tworzenia węzłów tekstowych użyjemy f-kcji createTextNode : Text textNode = doc.createTextNode(textContents); 4.Dodajemy elementy do korzenia i odpowiednich węzłów: doc.appendChild(rootElement); rootElement.appendChild(childElement); childElement.appendChild(textNode);

11 Wykład 8: XML & Java Tworzenie XML 11/15 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("{http://xml.apache.org/xslt}indent-amount", "2"); t.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(file)));

12 Wykład 8: XML & Java Walidacja DTD 13/15 Kontrola poprawności dokumentu XML względem jego DTD Procedura: 1.Informujemy fabrykę DocumentBuilderFactory, aby wykorzystywała weryfikację poprawności dokumentów: factory.setValidating(true); 2.Aby parser ignorował odstępy między elementami (umyślne tabulacje): factory.setIgnoringElementContentWhitespace(true); 3.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);

13 Wykład 8: XML & Java Walidacja DTD 14/15 Dodatkowe metody:

14 Wykład 8: XML & Java Walidacja XML Schema 15/15 Kontrola poprawności dokumentu XML względem XML Schema Procedura – taka sama jak przy DTD jednakże: 1.Należy włączyć obsługę przestrzeni nazw nawet, gdy nie są one używane w dokumencie XML: factory.setNamespaceAware(true); 2.Przygotowujemy fabrykę do obsługi schematów za pomocą następującego fragmentu kodu: final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage"; final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema"; factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA); Zobaczmy to w praktyce!


Pobierz ppt "Technologie mgr inż. Tomasz Węgliński www:"

Podobne prezentacje


Reklamy Google