Tytuł oryginału: Java Cookbook, Third Edition Tłumaczenie: Piotr Rajca ISBN: 978-83-246-9573-7 © 2015 Helion S.A. Authorized Polish translation of the English edition of Java Cookbook, ISBN 9781449337049 © 2014 RejmiNet Group, Inc. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: [email protected] WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/jarec3_ebook Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/jarec3.zip Poleć książkę na Facebook.com Księgarnia internetowa Kup w wersji papierowej Lubię to! » Nasza społeczność Oceń książkę Spis treści Wstęp ...........................................................................................................................13 1. Rozpoczynanie pracy: kompilacja, uruchamianie i testowanie ................................31 1.0. Wprowadzenie .............................................................................................................................31 1.1. Kompilacja i uruchamianie programów napisanych w Javie — JDK ................................32 1.2. Edycja i kompilacja programów przy użyciu edytorów wyposażonych w kolorowanie syntaktyczne ........................................................................33 1.3. Kompilacja, uruchamianie i testowanie programów przy użyciu IDE .............................35 1.4. Efektywne wykorzystanie zmiennej środowiskowej CLASSPATH ..................................42 1.5. Pobieranie przykładów dołączonych do tej książki i korzystanie z nich .........................44 1.6. Automatyzacja kompilacji przy użyciu programu Ant .......................................................50 1.7. Automatyzacja zależności, kompilacji, testowania i wdrażania przy użyciu programu Apache Maven ...................................................................................53 1.8. Automatyzacja zależności, kompilacji, testowania i wdrażania przy użyciu programu Gradle ..................................................................................................56 1.9. Komunikaty o odrzuconych metodach ...................................................................................59 1.10. Testowanie warunkowe bez użycia dyrektywy #ifdef .......................................................61 1.11. Zapewnianie poprawności programu za pomocą asercji ..................................................63 1.12. Wykorzystanie programu uruchomieniowego ....................................................................64 1.13. Testowanie jednostkowe — jak uniknąć konieczności stosowania programów uruchomieniowych? .....................................................................66 1.14. Zarządzanie kodem z wykorzystaniem ciągłej integracji ..................................................69 1.15. Uzyskiwanie czytelnych komunikatów o wyjątkach .........................................................74 1.16. Poszukiwanie przykładowych kodów źródłowych: programy, szkielety i biblioteki .....74 2. Interakcja ze środowiskiem ........................................................................................79 2.0. Wprowadzenie .............................................................................................................................79 2.1. Pobieranie wartości zmiennych środowiskowych ................................................................79 2.2. Pobieranie informacji z właściwości systemowych ..............................................................81 2.3. Określanie używanej wersji JDK ..............................................................................................82 2.4. Tworzenie kodu zależnego od używanego systemu operacyjnego ...................................84 2.5. Stosowanie rozszerzających interfejsów programistycznych lub innych API .................87 2.6. Analiza argumentów podanych w wierszu wywołania programu ...................................87 3 3. Łańcuchy znaków i przetwarzanie tekstów ...............................................................95 3.0. Wprowadzenie .............................................................................................................................95 3.1. Odczytywanie fragmentów łańcucha ......................................................................................97 3.2. Dzielenie łańcuchów na słowa ..................................................................................................98 3.3. Łączenie łańcuchów znaków przy użyciu klasy StringBuilder ........................................102 3.4. Przetwarzanie łańcucha znaków po jednej literze ..............................................................104 3.5. Wyrównywanie łańcuchów znaków .....................................................................................105 3.6. Konwersja pomiędzy znakami Unicode a łańcuchami znaków .......................................108 3.7. Odwracanie kolejności słów lub znaków w łańcuchu ........................................................110 3.8. Rozwijanie i kompresja znaków tabulacji .............................................................................111 3.9. Kontrola wielkości liter ............................................................................................................116 3.10. Wcinanie zawartości dokumentów tekstowych ................................................................117 3.11. Wprowadzanie znaków niedrukowalnych ........................................................................118 3.12. Usuwanie odstępów z końca łańcucha ...............................................................................119 3.13. Przetwarzanie danych rozdzielonych przecinkami ..........................................................120 3.14. Program — proste narzędzie do formatowania tekstów .................................................125 3.15. Program — fonetyczne porównywanie nazwisk ..............................................................127 4. Dopasowywanie wzorców przy użyciu wyrażeń regularnych ................................131 4.0. Wprowadzenie ...........................................................................................................................131 4.1. Składnia wyrażeń regularnych ...............................................................................................133 4.2. Wykorzystanie wyrażeń regularnych w języku Java — sprawdzanie występowania wzorca ................................................................................140 4.3. Odnajdywanie tekstu pasującego do wzorca .......................................................................143 4.4. Zastępowanie określonego tekstu ..........................................................................................146 4.5. Wyświetlanie wszystkich wystąpień wzorca .......................................................................147 4.6. Wyświetlanie wierszy zawierających fragment pasujący do wzorca ..............................149 4.7. Kontrola wielkości znaków w metodach match() i subst() ...............................................150 4.8. Dopasowywanie znaków z akcentami lub znaków złożonych ........................................152 4.9. Odnajdywanie znaków nowego wiersza ..............................................................................153 4.10. Program — analiza dziennika serwera Apache .................................................................155 4.11. Program — analizowanie danych ........................................................................................156 4.12. Program — pełna wersja programu grep ...........................................................................159 5. Liczby .........................................................................................................................165 5.0. Wprowadzenie ...........................................................................................................................165 5.1. Sprawdzanie, czy łańcuch znaków stanowi poprawną liczbę ..........................................168 5.2. Zapisywanie dużych wartości w zmiennych „mniejszych” typów .................................170 5.3. Konwertowanie liczb na obiekty i na odwrót ......................................................................171 5.4. Pobieranie ułamka z liczby całkowitej bez konwertowania go na postać zmiennoprzecinkową .............................................................................................172 5.5. Wymuszanie zachowania dokładności liczb zmiennoprzecinkowych ...........................173 5.6. Porównywanie liczb zmiennoprzecinkowych .....................................................................175 4 Spis treści 5.7. Zaokrąglanie wartości zmiennoprzecinkowych ..................................................................177 5.8. Formatowanie liczb ...................................................................................................................178 5.9. Konwersje pomiędzy różnymi systemami liczbowymi — dwójkowym, ósemkowym, dziesiętnym i szesnastkowym .........................................181 5.10. Operacje na grupie liczb całkowitych ..................................................................................182 5.11. Posługiwanie się cyframi rzymskimi ...................................................................................183 5.12. Formatowanie z zachowaniem odpowiedniej postaci liczby mnogiej ..........................187 5.13. Generowanie liczb losowych .................................................................................................189 5.14. Obliczanie funkcji trygonometrycznych .............................................................................192 5.15. Obliczanie logarytmów ..........................................................................................................192 5.16. Mnożenie macierzy .................................................................................................................193 5.17. Operacje na liczbach zespolonych ........................................................................................195 5.18. Obsługa liczb o bardzo dużych wartościach ......................................................................197 5.19. Program TempConverter .......................................................................................................200 5.20. Program — generowanie liczbowych palindromów ........................................................201 6. Daty i godziny — nowy interfejs programowania aplikacji ....................................205 6.0. Wprowadzenie ...........................................................................................................................205 6.1. Określanie bieżącej daty ...........................................................................................................208 6.2. Wyświetlanie daty i czasu w zadanym formacie ................................................................209 6.3. Konwersja liczb określających datę i czas oraz ilości sekund ...........................................211 6.4. Analiza łańcuchów znaków i ich zamiana na daty .............................................................212 6.5. Obliczanie różnic pomiędzy dwiema datami ......................................................................213 6.6. Dodawanie i odejmowanie dat ...............................................................................................214 6.7. Stosowanie starych klas Date i Calendar ..............................................................................215 7. Strukturalizacja danych w języku Java ......................................................................217 7.0. Wprowadzenie ...........................................................................................................................217 7.1. Strukturalizacja danych przy użyciu tablic ..........................................................................218 7.2. Modyfikacja wielkości tablic ...................................................................................................220 7.3. Szkielet kolekcji ..........................................................................................................................221 7.4. Klasa podobna do tablicy, lecz bardziej dynamiczna .........................................................223 7.5. Stosowanie kolekcji ogólnych .................................................................................................225 7.6. Unikanie rzutowania dzięki zastosowaniu typów ogólnych ............................................227 7.7. Jak przeglądać zawartość kolekcji? Wyliczenie dostępnych sposobów ..........................230 7.8. Unikanie powtórzeń dzięki zastosowaniu zbioru ...............................................................232 7.9. Iteratory lub wyliczenia — dostęp do danych w sposób niezależny od ich typów .....233 7.10. Strukturalizacja danych z wykorzystaniem list połączonych .........................................234 7.11. Odwzorowywanie z wykorzystaniem klas Hashtable oraz HashMap .........................238 7.12. Zapisywanie łańcuchów znaków w obiektach Properties i Preferences .......................240 7.13. Sortowanie kolekcji .................................................................................................................244 7.14. Unikanie konieczności sortowania danych ........................................................................248 7.15. Odnajdywanie obiektu w kolekcji ........................................................................................250 Spis treści 5 7.16. Zamiana kolekcji na tablicę ...................................................................................................252 7.17. Tworzenie własnego iteratora ...............................................................................................253 7.18. Stos .............................................................................................................................................256 7.19. Struktury wielowymiarowe ..................................................................................................259 7.20. Program — porównanie szybkości działania .....................................................................261 8. Techniki obiektowe ...................................................................................................263 8.0. Wprowadzenie ...........................................................................................................................263 8.1. Wyświetlanie obiektów — formatowanie obiektów przy użyciu metody toString() .....266 8.2. Przesłanianie metod equals() oraz hashCode() ....................................................................267 8.3. Porządki w aplikacji przy użyciu metody addShutdownHook() ....................................273 8.4. Wykorzystanie klas wewnętrznych .......................................................................................274 8.5. Tworzenie metod zwrotnych z wykorzystaniem interfejsów ...........................................276 8.6. Polimorfizm i metody abstrakcyjne .......................................................................................279 8.7. Przekazywanie wartości ...........................................................................................................281 8.8. Wartości wyliczeniowe bezpieczne dla typów ....................................................................284 8.9. Wymuszanie użycia wzorca Singleton ..................................................................................288 8.10. Zgłaszanie własnych wyjątków ............................................................................................290 8.11. Wstrzykiwanie zależności ......................................................................................................291 8.12. Program Plotter ........................................................................................................................294 9. Techniki programowania funkcyjnego: interfejsy funkcyjne, strumienie i kolekcje równoległe ...........................................299 9.0. Wprowadzenie ...........................................................................................................................299 9.1. Stosowanie wyrażeń lambda lub domknięć zamiast klas wewnętrznych ......................301 9.2. Stosowanie predefiniowanych interfejsów lambda zamiast własnych ...........................304 9.3. Upraszczanie przetwarzania z wykorzystaniem interfejsu Stream .................................306 9.4. Poprawianie przepustowości dzięki wykorzystaniu strumieni i kolekcji równoległych ....308 9.5. Tworzenie własnych interfejsów funkcyjnych .....................................................................309 9.6. Używanie istniejącego kodu w sposób funkcyjny dzięki wykorzystaniu odwołań do metod ............................................................................311 9.7. Wstawianie istniejącego kodu metod ....................................................................................315 10. Wejście i wyjście .........................................................................................................317 10.0. Wprowadzenie .........................................................................................................................317 10.1. Odczytywanie informacji ze standardowego strumienia wejściowego ........................320 10.2. Odczyt z konsoli lub okna terminala; odczyt hasła bez jego wyświetlania .................323 10.3. Zapis danych w standardowym strumieniu wyjściowym lub w strumieniu błędów ....325 10.4. Wyświetlanie tekstów przy użyciu klasy Formatter i metody printf ............................327 10.5. Analiza zawartości pliku przy użyciu klasy StringTokenizer ........................................331 10.6. Analiza danych wejściowych przy użyciu klasy Scanner ...............................................335 10.7. Analiza danych wejściowych o strukturze gramatycznej ................................................338 10.8. Otwieranie pliku o podanej nazwie .....................................................................................340 10.9. Kopiowanie plików .................................................................................................................341 6 Spis treści 10.10. Odczytywanie zawartości pliku i zapisywanie jej w obiekcie String ..........................347 10.11. Zmiana skojarzeń standardowych strumieni ...................................................................347 10.12. Powielanie strumienia podczas realizacji operacji zapisu .............................................348 10.13. Odczyt i zapis danych zakodowanych w innym zbiorze znaków ...............................351 10.14. Te kłopotliwe znaki końca wiersza ....................................................................................352 10.15. Kod operujący na plikach w sposób zależny od systemu operacyjnego ....................353 10.16. Odczytywanie „podzielonych” wierszy tekstu ...............................................................354 10.17. Odczytywanie i zapisywanie danych binarnych .............................................................358 10.18. Przejście do określonego miejsca w pliku .........................................................................359 10.19. Zapisywanie danych w strumieniu z wykorzystaniem języka C ................................360 10.20. Zapisywanie i odczytywanie obiektów .............................................................................363 10.21. Unikanie wyjątków ClassCastException spowodowanych nieprawidłowymi wartościami SerialVersionUID ..........................................................366 10.22. Odczytywanie i zapisywanie danych w archiwach JAR oraz ZIP ...............................368 10.23. Odnajdywanie plików w sposób niezależny od systemu operacyjnego przy użyciu metod getResource() i getResourceAsStream() .........................................371 10.24. Odczytywanie i zapisywanie skompresowanych plików .............................................373 10.25. Poznawanie API do obsługi portów szeregowych i równoległych .............................374 10.26. Zapisywanie danych użytkownika na dysku ..................................................................379 10.27. Program — zamiana tekstu do postaci PostScript ..........................................................382 11. Operacje na katalogach i systemie plików ...............................................................387 11.0. Wprowadzenie .........................................................................................................................387 11.1. Pobieranie informacji o pliku ................................................................................................388 11.2. Tworzenie pliku .......................................................................................................................390 11.3. Zmiana nazwy pliku ...............................................................................................................391 11.4. Usuwanie plików ....................................................................................................................392 11.5. Tworzenie plików tymczasowych ........................................................................................394 11.6. Zmiana atrybutów pliku ........................................................................................................395 11.7. Tworzenie listy zawartości katalogu ...................................................................................397 11.8. Pobieranie katalogów głównych ..........................................................................................399 11.9. Tworzenie nowych katalogów ..............................................................................................400 11.10. Stosowanie klasy Path zamiast File ...................................................................................401 11.11. Stosowanie usługi WatchService do uzyskiwania informacji o zmianach pliku ......402 11.12. Program Find .........................................................................................................................404 12. Multimedia: grafika, dźwięk i wideo ........................................................................407 12.0. Wprowadzenie .........................................................................................................................407 12.1. Rysowanie przy użyciu obiektu Graphics ..........................................................................408 12.2. Testowanie komponentów graficznych ..............................................................................409 12.3. Wyświetlanie tekstu ................................................................................................................410 12.4. Wyświetlanie wyśrodkowanego tekstu w komponencie ................................................411 12.5. Rysowanie cienia .....................................................................................................................413 Spis treści 7 12.6. Wyświetlanie tekstu przy użyciu biblioteki grafiki dwuwymiarowej ..........................415 12.7. Wyświetlanie tekstu przy użyciu czcionki aplikacji .........................................................417 12.8. Wyświetlanie obrazu ..............................................................................................................419 12.9. Odczyt i zapis obrazów przy użyciu pakietu javax.imageio ..........................................423 12.10. Odtwarzanie pliku dźwiękowego ......................................................................................424 12.11. Prezentacja ruchomego obrazu ...........................................................................................426 12.12. Drukowanie w Javie .............................................................................................................430 12.13. Program PlotterAWT ............................................................................................................434 12.14. Program Grapher ...................................................................................................................435 13. Klienty sieciowe .........................................................................................................439 13.0. Wprowadzenie .........................................................................................................................439 13.1. Nawiązywanie połączenia z serwerem ...............................................................................441 13.2. Odnajdywanie i zwracanie informacji o adresach sieciowych .......................................443 13.3. Obsługa błędów sieciowych ..................................................................................................445 13.4. Odczyt i zapis danych tekstowych ......................................................................................446 13.5. Odczyt i zapis danych binarnych .........................................................................................448 13.6. Odczyt i zapis danych serializowanych ..............................................................................450 13.7. Datagramy UDP ......................................................................................................................452 13.8. Program — klient TFTP wykorzystujący protokół UDP .................................................454 13.9. URI, URL czy może URN? .....................................................................................................458 13.10. Klient usługi internetowej REST .........................................................................................459 13.11. Klient usługi internetowej SOAP .......................................................................................461 13.12. Program — klient usługi Telnet .........................................................................................466 13.13. Program — klient pogawędek internetowych .................................................................468 13.14. Program — sprawdzanie odnośników HTTP ..................................................................472 14. Graficzny interfejs użytkownika ..............................................................................475 14.0. Wprowadzenie .........................................................................................................................475 14.1. Wyświetlanie komponentów graficznego interfejsu użytkownika ................................477 14.2. Uruchamianie graficznego interfejsu użytkownika w wątku przekazywania zdarzeń ........................................................................................478 14.3. Projektowanie układu okna ...................................................................................................480 14.4. Karty — nowe spojrzenie na świat ......................................................................................483 14.5. Obsługa czynności — tworzenie działających przycisków .............................................484 14.6. Obsługa czynności z wykorzystaniem anonimowych klas wewnętrznych .................486 14.7. Obsługa czynności z wykorzystaniem wyrażeń lambda .................................................488 14.8. Kończenie programu przy użyciu przycisku Zamknij .....................................................489 14.9. Okna dialogowe — tego nie można zrobić później ..........................................................494 14.10. Przechwytywanie i formatowanie wyjątków graficznego interfejsu użytkownika ...496 14.11. Wyświetlanie wyników wykonania programu w oknie ................................................499 14.12. Wybieranie wartości przy użyciu komponentu JSpinner ..............................................505 14.13. Wybieranie plików przy użyciu klasy JFileChooser .......................................................506 8 Spis treści 14.14. Wybieranie koloru .................................................................................................................509 14.15. Formatowanie komponentów przy użyciu kodu HTML ..............................................511 14.16. Wyświetlanie okna głównego pośrodku ekranu .............................................................512 14.17. Zmiana sposobów prezentacji programów pisanych z wykorzystaniem pakietu Swing ......................................................................................515 14.18. Korzystanie z rozszerzonych możliwości pakietu Swing w systemie Mac OS X .....519 14.19. Tworzenie aplikacji z graficznym interfejsem użytkownika przy użyciu pakietu JavaFX ................................................................................................522 14.20. Program — własne narzędzie do wybierania czcionek .................................................524 14.21. Program — własny menedżer układu ...............................................................................528 15. Tworzenie programów wielojęzycznych oraz lokalizacja ......................................535 15.0. Wprowadzenie .........................................................................................................................535 15.1. Tworzenie przycisku w różnych wersjach językowych ...................................................535 15.2. Tworzenie listy dostępnych ustawień lokalnych ..............................................................538 15.3. Tworzenie menu z wykorzystaniem zasobów wielojęzycznych ....................................539 15.4. Tworzenie metod pomocniczych przydatnych podczas pisania programów wielojęzycznych ..................................................................539 15.5. Tworzenie okien dialogowych z wykorzystaniem zasobów wielojęzycznych ............541 15.6. Tworzenie wiązki zasobów ...................................................................................................543 15.7. Usuwanie łańcuchów znaków z kodu ................................................................................544 15.8. Wykorzystanie konkretnych ustawień lokalnych .............................................................545 15.9. Określanie domyślnych ustawień lokalnych .....................................................................546 15.10. Formatowanie komunikatów przy użyciu klasy MessageFormat ...............................547 15.11. Program MenuIntl .................................................................................................................549 15.12. Program BusCard ..................................................................................................................551 16. Programy Javy działające na serwerze — gniazda .................................................555 16.0. Wprowadzenie .........................................................................................................................555 16.1. Tworzenie serwera ..................................................................................................................556 16.2. Zwracanie odpowiedzi (łańcucha znaków bądź danych binarnych) ............................558 16.3. Zwracanie informacji o obiektach ........................................................................................562 16.4. Obsługa wielu klientów .........................................................................................................563 16.5. Serwer obsługujący protokół HTTP .....................................................................................567 16.6. Zabezpieczanie serwera WWW przy użyciu SSL i JSSE ..................................................570 16.7. Rejestracja operacji sieciowych .............................................................................................572 16.8. Rejestracja przez sieć przy użyciu SLF4J ............................................................................574 16.9. Rejestracja przez sieć przy użyciu log4j ..............................................................................576 16.10. Rejestracja przez sieć przy użyciu pakietu java.util.logging .........................................579 16.11. Znajdowanie interfejsów sieciowych .................................................................................581 16.12. Program — serwer pogawędek w Javie ............................................................................582 Spis treści 9 17. Java i poczta elektroniczna .......................................................................................587 17.0. Wprowadzenie .........................................................................................................................587 17.1. Wysyłanie poczty elektronicznej — wersja działająca w przeglądarkach ....................588 17.2. Wysyłanie poczty elektronicznej — właściwe rozwiązanie ............................................592 17.3. Dodawanie możliwości wysyłania poczty do programu działającego na serwerze ....594 17.4. Wysyłanie wiadomości MIME ..............................................................................................599 17.5. Tworzenie ustawień poczty elektronicznej ........................................................................602 17.6. Odczytywanie poczty elektronicznej ...................................................................................603 17.7. Program MailReaderBean ......................................................................................................608 17.8. Program MailClient .................................................................................................................611 18. Dostęp do baz danych ...............................................................................................621 18.0. Wprowadzenie .........................................................................................................................621 18.1. Łatwy dostęp do bazy danych przy użyciu JPA oraz Hibernate ...................................623 18.2. Konfiguracja i nawiązywanie połączeń JDBC ....................................................................628 18.3. Nawiązywanie połączenia z bazą danych JDBC ...............................................................631 18.4. Przesyłanie zapytań JDBC i pobieranie wyników .............................................................634 18.5. Wykorzystanie przygotowanych poleceń JDBC ................................................................637 18.6. Wykorzystanie procedur osadzonych w JDBC ..................................................................641 18.7. Modyfikacja danych przy użyciu obiektu ResultSet ........................................................641 18.8. Zapisywanie wyników w obiektach RowSet .....................................................................642 18.9. Modyfikacja danych przy użyciu poleceń SQL .................................................................644 18.10. Odnajdywanie metadanych JDBC ......................................................................................646 18.11. Program SQLRunner ............................................................................................................650 19. Przetwarzanie danych w formacie JSON .................................................................661 19.0. Wprowadzenie .........................................................................................................................661 19.1. Bezpośrednie generowanie danych w formacie JSON .....................................................663 19.2. Analiza i zapisywanie danych JSON przy użyciu pakietu Jackson ...............................664 19.3. Analiza i zapis danych w formacie JSON przy użyciu pakietu org.json ......................665 20. XML ............................................................................................................................669 20.0. Wprowadzenie .........................................................................................................................669 20.1. Konwersja obiektów na dane XML przy użyciu JAXB ....................................................672 20.2. Konwersja obiektów na dane XML przy użyciu serializatorów ....................................675 20.3. Przekształcanie danych XML przy użyciu XSLT ..............................................................676 20.4. Analiza składniowa XML przy użyciu API SAX ..............................................................679 20.5. Analiza dokumentów XML przy użyciu modelu obiektów dokumentu (DOM) .......681 20.6. Odnajdywanie elementów XML przy użyciu XPath ........................................................684 20.7. Weryfikacja poprawności struktury z wykorzystaniem DTD ........................................686 20.8. Generowanie własnego kodu XML z wykorzystaniem DOM i obiektów przekształceń XML .............................................................................................689 20.9. Program xml2mif .....................................................................................................................691 10 Spis treści