Projektowanie warstwy serwera Współpraca z XML. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.

Slides:



Advertisements
Podobne prezentacje
Wstęp do strumieni danych
Advertisements

Programowanie obiektowe
Klasa listy jednokierunkowej Przekazywanie parametrów do funkcji
1 Dzisiejszy wykład Klasa string wersja prosta wersja ze zliczaniem odwołań Wyjątki Specyfikator volatile.
Klasy i obiekty.
Łódź, 29 października 2012 roku
Implementacja procesora XSLT w języku Ocaml
Systemy rozproszone W. Bartkiewicz
Sposoby implementacji asocjacji
XPath XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
XPath. XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
Wykorzystanie XML-a we własnych aplikacjach Wykorzystanie XML-a we własnych aplikacjach2 Modele dostępu do dokumentu XML Pozwalają programistom.
2 grudnia 2004 Wykorzystanie XML-a we własnych aplikacjach Patryk Czarnik (na podstawie wykładu Szymona Zioło)
XSL – część 2.
XSL Extensible Stylesheet Language 6 listopada 2003.
Modele dostępu do dokumentu XML
Wykorzystanie XML-a we własnych aplikacjach 23 października 2003.
11 Przypomnienie: zaliczenie ćwiczeń Kolokwium zaliczeniowe na ćwiczeniach 16 maja: zadania z technik omawianych na ćwiczeniach, można korzystać z notatek.
SAX i DOM wykorzystanie XML-a we własnych aplikacjach
Technologie XML Mgr inż. Michał Jaros Technologie XML wykład 3.
Model – View - Controler
Doskonalenie zarządzania usługami publicznymi i rozwojem w jednostkach samorządu lokalnego Projekt współfinansowany ze środków Unii Europejskiej w ramach.
Obiektowe metody projektowania systemów Command Pattern.
Programowanie sieciowe w Javie
Gniazda komunikacji sieciowej w języku Java
Język ANSI C Operacje we/wy
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.

Projektowanie warstwy serwera DisplayTag. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Projektowanie warstwy serwera Acegi. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.
Projektowanie warstwy serwera Spring MVC - uzupełnienie.
Hibernate relacje.
Projektowanie warstwy serwera Znaczniki jsp. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Hibernate uzupełnienie
Projektowanie warstwy serwera Wprowadzenie. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Polsko-Japońska Wyższa Szkoła Technik Komputerowych
Podstawy C# Grupa .NET PO.
XML eXtensible Markup Language. 2 Prowadzący Michał Kozielski p. 413 mail:
Podstawy programowania II
Podstawy programowania II
HTML DOM, XHTML – cel, charakterystyka
Podstawy inżynierii oprogramowania Zofia Kruczkiewicz
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
Procedury i funkcje.
Programowanie obiektowe III rok EiT
Złożone typy danych Listy Tworzenie elastycznych baz danych
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Projektowanie stron WWW
Piotr Czapiewski Wydział Informatyki ZUT.  Extensible Markup Language  Język znaczników  Human-readable and machine-readable  Niezależny od platformy.
Algorytmy i Struktury Danych
DOM Ewa Dukała Piotr Muszyński. DOM DocumentBuilder Factory Document Builder XML Data object obiectobject DocumentDOM.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Obiekty DOM.
Iga Lewandowska I EMII MU
Adresowanie elementów struktury dokumentów - XPath.
Algorytmy i Struktury Danych Struktury Danych
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Wykład 11 Aplikacje SDI PO11-1 / 22 Single Document Interface 1.Klasy aplikacji SDI 2.Menu systemowe aplikacji SDI 3.Serializacja 4.Tworzenie widoku 5.Tworzenie.
The Poznan University of Economics Department of Management Information Systems XML - wprowadzenie.
ALGORYTMY I STRUKTURY DANYCH
STOS. STL (ang. Standard Template Library) jest to biblioteka zawierająca algorytmy, pojemniki, iteratory oraz inne konstrukcje w formie szablonów, gotowe.
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
XML we własnych aplikacjach Patryk Czarnik. Wykorzystanie XML we własnych aplikacjach Jak korzystać z XML we własnych aplikacjach? Odczyt zawartości dokumentów.
XML we własnych aplikacjach
Listy.
Programowanie Obiektowe – Wykład 2
Aplikacje i usługi internetowe
Zapis prezentacji:

Projektowanie warstwy serwera Współpraca z XML

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 2 Plan wykładu Przykład pliku w formacie xml Przetwarzanie DOM Przetwarzanie SAX JAXB

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 3 Przykładowy opis xml Marek Odynca 34 Politechniki 30

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 4 xsd - przykład

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 5 Przetwarzanie SAX UzytkownikHandler handler = new UzytkownikHandler(); SAXParser sp = new SAXParser(); sp.setContentHandler(handler); sp.parse(getNazwa_pliku()+".xml"); if (!handler.getBledy().toString().equals("")) {.... }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 6 Przetwarzanie SAX – handler (I) public UzytkownikHandler() { bledy.append(""); } public void startElement(String uri, String localName, String qName, Attributes attributes) { curr_name_tag = localName; otwarty_pusty = true; }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 7 Przetwarzanie SAX – handler (II) public void endElement(String uri, String localName, String qName) { if (otwarty_pusty) { bledy.append("Pusty tag: "+curr_name_tag); } otwarty_pusty = false; }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 8 Przetwarzanie SAX – handler (III) public void characters(char ch[], int start, int length) { String value = new String(ch, start, length); otwarty_pusty = false; }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 9 Typ Node parentNode - węzeł nadrzędny nodeName - nazwa węzła nodeValue – wartość węzła nodeType – typ węzła attributes – atrybuty węzła lastChild – ostatni węzeł potomny firstChild – pierwszy węzeł potomny childNodes – lista węzłów potomnych

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 10 Metody klasy Node replaceChild(n,n) - zamienia istniejący węzeł potomny z podanym węzłem removeChild(n) - usuwa wskazany węzeł potomny insertBefore(n,n) - dołącza nowy węzeł jako węzeł potomny przed wskazanym węzłem cloneNode(b) – generuje kopię głęboką węzła appendChild(n) – dołącza nowy węzeł jako ostatni węzeł potomny

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 11 Typ NodeList Length() item(i)

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 12 Typ Dokument Typ Document modeluje całe drzewo DOM; wszystkie węzły drzewa są jego potomkami documentElement - element najwyższego poziomu w dokumencie getElementsByTagName(s) - zwraca listę węzłów o podanej nazwie createElement(s) - tworzy nowy element

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 13 Typ Element Typ Element modeluje węzeł reprezentujący parę znaczników XML tagName - nazwa węzła setAttributeNode(n) wstawia nowy węzeł atrybutu setAttribute(s,s) - ustawia nową wartość atrybutu removeAttribute(s) - usuwa wartość podanego atrybutu getAttributeNode(s) - zwraca węzeł podanego atrybutu getAttribute(s) - zwraca wartość podanego atrybutu

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 14 Przetwarzanie DOM (I) DOMParser dp = new DOMParser(); Node titleNode = null; NodeList titleNodeList = null; NodeList titleNodeList2 = null; XSDBuilder builder = new XSDBuilder(); dp.setXMLSchema((XMLSchema)builder.build(nazwaXsd)); p.setValidationMode(XMLParser.SCHEMA_VALIDATION); dp.setPreserveWhitespace (true); dp.parse(nazwaXml);

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 15 Przetwarzanie DOM (II) XMLDocument xmlDoc = dp.getDocument(); titleNodeList = xmlDoc.getElementsByTagName(Adres"); String ulica = titleNodeList.item(0).getFirstChild().getNodeValue(); titleNodeList2 = titleNodeList.item(0). getChildNodes(); for (int i=0; i<titleNodeList2.getLength(); j++) { titleNode = titleNodeList2.item(j); if (titleNode.getNodeName().equals(numer")) System.out.println(titleNode.getFirstChild().getNodeValue()); }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 16 XSLT XSLProcessor xslProc = new XSLProcessor(); dp.parse(xslt_name); XMLDocument xmlDoc = dp.getDocument(); XSLStylesheet xsl = xslProc.newXSLStylesheet(xmlDoc); XMLDocumentFragment htmlDoc = slProc.processXSL(xsl, xmlDoc); htmlDoc.print(wyjscie2);

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 17 JAXB - Java Architecutre for XML Binding JAXB to standard definiujący dostęp do plików XML-owych z poziomu języka programowania. Filozofia JAXB jest trochę inna niż SAX i DOM: nie ma tu ogólnego interfejsu do parsowania plików, zamiast tego jest interfejs tworzony na podstawie DTD lub XML-Schemy. W praktyce wygląda to tak, że dostajemy kompilator schematów (lub dtd), który z tych schematów generuje klasy - dla każdego elementu XML powstaje jedna klasa.

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 18 Zalety w stosunku do SAX i DOM cały plik jest w pamięci - łatwiejszy dostęp do pliku JAXB umożliwia modyfikację i zapisywanie dokumentu do pliku. SAX jest przeznaczony tylko do odczytu nie ma narzutu na generyczność DOM-a, w pamięci jest tylko to co trzeba bardziej intuicyjny dostęp do dokumentu, zamiast metodami typu getFirstChild() wykonywane są metody tupu item.getImie(), nie trzeba znać struktury dokumentu

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 19 Podstawowe operacje udostępniane przez JAXB unmarshalling - zamiana pliku XML na obekty java weryfikacja - sprawdzenie poprawności pliku xml z XSD (DTD) marshalling - zamiana obiektów java na dokument XML

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 20 Generacja JAXB xjc nazwa_pliku.xsd

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 21 Unmarshalling (I) JAXBContext jc = JAXBContext.newInstance(domain.xml" ); Unmarshaller u = jc.createUnmarshaller(); TUzytkownik uzytkownik = (TUzytkownik) u.unmarshal( new FileInputStream(przyklad.xml")); TImie imie = uzytkownik.getImie();

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 22 Unmarshalling (II) JAXBElement uzytkownik = null; JAXBContext jc = JAXBContext.newInstance("domain.xml"); ObjectFactory objectFactory = new ObjectFactory(); Unmarshaller unmarshaller = jc.createUnmarshaller(); String plikXml = new String(contents, "UTF-8"); Reader readerXml = new StringReader(plikXml); uzytkownik = (JAXBElement ) unmarshaller.unmarshal(readerXml);

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 23 marshalling JAXBContext jc = JAXBContext.newInstance("domain.xml"); ObjectFactory objectFactory = new ObjectFactory(); StringWriter sw = new StringWriter(); marshaller = jc.createMarshaller(); marshaller.setProperty("jaxb.formatted.output", true); marshaller.setProperty("com.sun.xml.internal.bind. namespacePrefixMapper", new PrefixMapper()); marshaller.marshal(objectFactory. createUzytkownik(UzytkownikXML), sw);

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 24 Object public class ObjectFactory { private final static QName _Uzytkownik_QNAME = new QName(" = name = Uzytkownik") public JAXBElement createUzytkownik(UzytkownikXML value) { return new JAXBElement (_Uzytkownik_QNAME, UzytkownikXML.class, null, value); }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 25 namespace = " elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED ) package domain.xml;

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego = "UzytkownikXML", propOrder = { "imie", "nazwisko", }) public class UzytkownikXML { String nazwisko; String imie; }