Katalog książek cz. 2



Podobne dokumenty
Katalog książek cz. 3: Web Service

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Bezpieczne uruchamianie apletów wg

akademia androida Składowanie danych część VI

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Aplikacje internetowe i rozproszone - laboratorium

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

Laboratorium 7 Blog: dodawanie i edycja wpisów

Wprowadzenie do Doctrine ORM

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Informatyka II. Laboratorium.

Języki i metody programowania Java Lab2 podejście obiektowe

Podstawy i języki programowania

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API

Git, Bitbucket, IntelliJ IDEA

Języki i metody programowania Java. Wykład 2 (część 2)

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Rozdział 4 KLASY, OBIEKTY, METODY

Programowanie w Javie

Laboratorium 8 Diagramy aktywności

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

JAX-RS czyli REST w Javie. Adam Kędziora

Diagram stanów Laboratorium 9

Zaawansowane aplikacje internetowe

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie obiektowe

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Wybierz kategorię Java Web i typ projektu Web Application. Kliknij przycisk Next >.

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Aplikacje w środowisku Java

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA

Programowanie Obiektowe GUI

Metody dostępu do danych

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie Obiektowe Ćwiczenie 4

Dokumentacja do API Javy.

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie obiektowe

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Zaawansowane aplikacje internetowe - laboratorium

Wywoływanie metod zdalnych

JAVA I XML ZAGADNIENIA: DOM, SAX, JAXB, XMLDecoder i XMLEncoder, ANT.

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Wykład 8: Obsługa Wyjątków

Wykład 4: Klasy i Metody

1 Klasa File. 2 Writer. Programowanie w j zyku Java - Adam Krechowicz. Klasa File zapewnia podstawowe operacje na plikach

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Aplikacje RMI Lab4

Db4o obiektowa baza danych wersja.net

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Katalog książek cz. 1

Programowanie 3 - Funkcje, pliki i klasy

Strumienie, pliki. Sortowanie. Wyjątki.

Ćwiczenia 9 - Swing - część 1

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

Zastosowanie komponentów EJB typu Session

Programowanie obiektowe zastosowanie języka Java SE

Wykład 7: Pakiety i Interfejsy

NHibernate Hibernate dla platformy.net. Hibernate posiada także dużą społeczność, zatem nietrudno uzyskać jakieś wsparcie w przypadku problemów.

Zaawansowane aplikacje internetowe - laboratorium

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Podstawy Języka Java

Instrukcja 3 Laboratorium z Podstaw Inżynierii Oprogramowania

1. CZYM JEST SERIALIZACJA

Enterprise JavaBeans (EJB)

Aplikacje internetowe laboratorium XML, DTD, XSL

Metody Metody, parametry, zwracanie wartości

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

JAVA I SIECI. MATERIAŁY:

Projektowanie algorytmów rekurencyjnych

Podstawy obiektowości

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Aplikacje w środowisku Java

Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x()

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów

Aplikacje WWW - laboratorium

Podstawowe informacje o technologii Java Persistence API - przykład

Jakarta POI. POIFS obsługa dokumentów OLE 2, HSSF dokumenty w formacie Excel'a, HWPF proste dokumenty w formacie Word 97,

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

Transkrypt:

Katalog książek cz. 2 Odczytywanie danych z XML Do ćwiczenia dołączony jest plik books.xml zawierający pełen katalog książek. Poniższy listing zawiera przykładowy fragment danych w stosowanym formacie. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <books> <book id="1"> <author>brett D. McLaughlin, Justin Edelson</author> <isbn>978-83-246-6075-9</isbn> <pages>0</pages> <publisher>helion</publisher> <title>java i XML. Wydanie III</title> <year>2007</year> </book> <book id="2"> <author>testowy autor</author> <isbn>123-45-678-9012-3</isbn> <pages>0</pages> <publisher>helion</publisher> <title>testowy tytuł</title> <year>2007</year> </book> </books> W kolejnych krokach rozbudujemy kod z ćwiczenia 1 o odczytywanie książek z pliku XML z użyciem standardu JAXB. 1) Otwórz projekt z ćwiczenia nr 1. Do katalogu projektu skopiuj plik books.xml dołączony do ćwiczenia. 2) Uzupełnij klasę Book o odpowiednie adnotacje: @XmlType(name = "book") Adnotację XmlType umieść przed nagłówkiem klasy Book. Informuje ona biblioteki JAXB o tym, że klasa Book będzie odpowiadać typowi o nazwie book w dokumencie XML. @XmlAttribute Adnotację XmlAttribute umieść przed metodą getid(). Informuje ona o tym, że właściwość id ma zostać zmapowana w sposób inny, niż domyślny na atrybut XML (domyślnie zostałaby zmapowana na element o nazwie id ). Strona 1

3) Stwórz klasę BookList, zawierającą listę książek oraz spełniającą wymagania JavaBean: package books; import java.util.list; public class BookList { private List<Book> books; public List<Book> getbooks() { return books; public void setbooks(list<book> books) { this.books = books; Uzupełnij klasę o odpowiednie adnotacje: @XmlRootElement(name = "books") przed nagłówkiem klasy @XmlElement(name = "book") przed metodą getbooks() Po uzupełnieniu pełny kod klasy BookList powinien wyglądać następująco: package books; import java.util.list; import javax.xml.bind.annotation.xmlelement; import javax.xml.bind.annotation.xmlrootelement; @XmlRootElement(name = "books") public class BookList { private List<Book> books; @XmlElement(name = "book") public List<Book> getbooks() { return books; public void setbooks(list<book> books) { this.books = books; Strona 2

4) Zmień kod metody main() w klasie Main, tak żeby odczytywał listę książek z pliku books.xml. Poniższe dwa listingi przedstawiają sam kod do odczytania danych z pliku XML z użyciem JAXB, a następnie całą metodę main(), po wymaganych uzupełnieniach i modyfikacjach. Odczyt listy książek z pliku XML: try { JAXBContext context = JAXBContext.newInstance(BookList.class); Unmarshaller um = context.createunmarshaller(); FileReader fr = new FileReader("books.xml"); BookList bl = (BookList) um.unmarshal(fr); fr.close(); catch (JAXBException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); Cała metoda main() po wszystkich modyfikacjach: public static void main(string[] args) { try { JAXBContext context = JAXBContext.newInstance(BookList.class); Unmarshaller um = context.createunmarshaller(); FileReader file = new FileReader("books.xml"); BookList books = (BookList)um.unmarshal(file); file.close(); BookManager bm = new BookManager( books.getbooks() ); List<Book> bs = bm.searchbytitle("java"); System.out.println(bs); catch (Exception ex) { ex.printstacktrace(); Strona 3

Zadanie 1 Zapis danych do XML odbywa się bardzo podobnie, jak odczyt. Aby zapisać pewien obiekt do XML, należy: przygotować kontekst JAXB (jak w powyższym kodzie); przygotować obiekt serializujący (zwany w JAXB marshallerem ), wywołując metodę createmarshaller(); wywołać metodę marshal(), przekazując do niej obiekt do zapisania oraz plik lub strumień wyjściowy. Klasa, do której należy zapisywany obiekt, musi posiadać odpowiednie adnotacje JAXB, w tym adnotację XmlRootElement. W naszym projekcie bezpośrednio zapisywać można obiekty klasy BookList. Dopisz do metody main() kod realizujący następujące zadanie: stwórz nową książkę; jako autora podaj swoje imię i nazwisko, jako tytuł Laboratorium: Java i XML ; dodaj tę książkę do listy w utworzonym wcześniej obiekcie BookManager; wyszukaj książki ze słowem Java w tytule; wynik opakuj w klasę BookList (czyli utwórz nowy obiekt klasy BookList, metodą setbooks() zapisz w nim listę znalezionych książek); zapisz powstałą listę książek do nowego pliku XML o nazwie lab3.xml. Zadanie 2 Zrób kopię projektu pierwotną wersję zachowaj na potrzeby kolejnych zajęć; kopii użyj w bieżącym zadaniu. Przyjrzyj się różnicy pomiędzy plikami books.xml i books.2.xml w pierwszym przypadku autorzy książki są podani w jednym elemencie XML, po przecinku: <author>jan Kowalski, Jan Nowak</author> w drugim pliku autorzy są rozbici na osobne elementy: <authors> <author>jan Kowalski</author> <author>jan Nowak</author> </authors> Strona 4

Zmodyfikuj klasę Book tak, aby była zgodna z drugą wersją (plik books.2.xml): o zamiast pola String author umieść pole: List<String> authors o usuń meotdy getauthor() i setauthor(), zastąp je odpowiednimi metodami getauthors() i setauthors() (skutkiem ubocznym będą błędy kompilacji w klasie BookManager dla uproszczenia możesz usunąć z klasy BookManager kod wyszukujący książki po autorze); o do poprawnej serializacji/deserializacji autorów konieczne będzie użycie adnotacji @XmlElementWrapper przykład jej użycia znajdziesz m.in. tutaj: https://jaxb.java.net/tutorial/section_6_2_7_7-wrapping-repeated-elements- XmlElementWrapper.html Zadanie 3 W pliku books.3.xml znajdziesz kolejną wersję formatu XML. Tym razem element publisher jest elementem złożonym, zawiera zagnieżdżone elementy name i url. Zmodyfikuj kod programu tak, by możliwe było odczytanie nowego formatu pliku. Konieczne będzie stworzenie klasy Publisher i odpowiednie zmapowanie jej do XML. Zadanie dodatkowe Przygotuj analogiczny kod dla danych przygotowanych w ramach poprzedniego ćwiczenia (własny plik XML i schemat XML Schema). Strona 5