Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 06

Save this PDF as:
 WORD  PNG  TXT  JPG

Wielkość: px
Rozpocząć pokaz od strony:

Download "Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 06"

Transkrypt

1 Plan Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 06 T. Romańczukiewicz Jagiellonian University 2009/2010

2 Plan Plan 1 SAX 2 Podsumowanie

3 Plan SAX Podsumowanie Przypomnienie Wstęp Obsługa błędów Kolejny przykład Kolejny prz 1 SAX Przypomnienie Wstęp Obsługa błędów Kolejny przykład Kolejny przykład 2 Podsumowanie

4 XML, poprawnie sformuowanie Sposoby opisu XML DTD XML Schema XPATH Sposoby prezentacji CSS XSLT DOM

5 DOM SAX Podsumowanie Przypomnienie Wstęp Obsługa błędów Kolejny przykład Kolejny prz DOM DOM W3C Document Object Model jest niezależnym od języka i platformy interfejsem pozwalajacym programom i skryptom na dostęp i zmiany w dokumentach XML. DOM i SAX SAX (ang. Simple API for XML czyli Proste API dla XML-a) interfejs programistyczny do sekwencyjnego parsowania dokumentów XML. Jest to jeden z mechanizmów, który pozwala odczytywać dane zapisane w dokumentach XML. Parser, który implementuje SAX, działa jako parser strumieniowy sterowany zdarzeniami. Przetwarzanie z użyciem SAX jest jednokierunkowe - wcześniej przetworzone dane nie moga być ponownie odczytane bez ponownego uruchomienia całej procedury. SAX został zaimplementowany w wielu językach obiektowych takich jak Java, C++, Visual Basic, Python czy Perl. Interfejs nie został jednak całkowicie zestandaryzowany i nawet pomiędzy różnymi kompilatorami C++ moga być różnice. korzystanie z modelu DOM wymaga wczytania całego dokumentu XML do pamięci i przechowywania go tam w postaci struktury drzewiastej o tym trzeba koniecznie pamiętać! należy uważać na DOM przy przetwarzaniu dużych ilości danych

6 W przeciwieństwie do interfejsu SAX, obiektowy model dokumentu wywodzi się z kręgów konsorcjum W3C. SAX to oprogramowanie będace własnościa publiczna. DOM jest samym w sobie standardem, tak jak XML. Model sekwencyjny(interfejs SAX) nie umożliwia uzyskania swobodnego dostępu do dokumentu XML. Informacje o dokumencie XML pobierane sa wtedy, kiedy robi to parser Kiedy pojawia się element 2., to nie można uzyskać dostępu do informacji w elemencie 4., ponieważ nie został on jeszcze przetworzony. Kiedy pojawi się element 4., to nie można powrócić do elementu 2.

7 Przetwarzanie XML-a przez SAX Parser, który implementuje SAX, działa jako parser strumieniowy sterowany zdarzeniami. Użytkownik określa szereg metod, które obsługuja zdarzenia pojawiajace się podczas przetwarzania danych. SAX rozpoznaje m.in. następujace elementy dokumentu XML: węzły tekstowe elementy instrukcje przetwarzania komentarze Zdarzenia wywoływane sa podczas napotkania któregokolwiek z powyższych elementów - dwukrotnie, na poczatku i na końcu. Atrybuty sa dostępne jako część danych przekazywanych do procedury obsługi danego zdarzenia. Przetwarzanie z użyciem SAX jest jednokierunkowe - wcześniej przetworzone dane nie moga być ponownie odczytane bez ponownego uruchomienia całej procedury.

8 Dostęp hierarchiczny SAX Podsumowanie Przypomnienie Wstęp Obsługa błędów Kolejny przykład Kolejny prz Dostęp do elementów poprzez SAX jest w dużym stopniu hierarchiczny i sekwencyjny. Uzyskujemy dostęp do krańcowego elementu węzła, potem przechodzimy z powrotem w górę drzewa i znów schodzimy do innego elementu na dole hierarchii. Nie ma przejrzystego odniesienia do poziomu hierarchii, na którym aktualnie się znajdujemy. Nie ma zaimplementowanego pojęcia elementu siostrzanego, następnego elementu na tym samym poziomie nie ma też możliwości sprawdzenia, które elementy sa zagnieżdżone w których. XSLT i XPath często musza korzystać z całego drzewa. Można to naturalnie wykorzystaćw DOM, w SAX praktycznie tego nie da sie zrobić. O tym czy korzystać z DOM czy SAX należy sie zdecydować w zależności od konkretnego zastosowania. DOM jest wygodniejszy w przypadku skomplikowanych struktur danych. W przypadku płytkich danych SAX działa o wiele szybciej i oszczędniej. StAX Istnieje rozwiazanie pośrednie pomiędzy modelem DOM i SAX: Metafora przetwarzania strumieniowego w StAX jest kursor, który reprezentuje pojedynczy punkt w całym dokumencie XML. Programista zawsze wie, gdzie kursor się znajduje, może na żadanie przesuwać ten kursor do przodu i pobierać informacje z parsera wedle własnego uznania. Jest to podejście podobne do tego używanego w modelu zdarzeń takim jak SAX, lecz z ta różnica, że informacje z parsera sa przesyłane tylko na żadanie, a nie jak w przypadku SAX, który przesyła je bez względu na to czy sa

9 SAX nie udostępnia domyślnego modelu danych tak jak robi to DOM. Trzeba samodzielnie stworzyć taki model danych np. (ksiażkę adresowa) do przechowywania danych z XML w programie Java. Należy również zaimplementować handler do przechwytywania zdarzeń zgłaszanych przez parser.

10 Listing 1: Przetwarzanie pliku XML 1 import java.io.ioexception; 2 import org.xml.sax.saxexception; 3 import org.xml.sax.xmlreader; 4 import org.apache.xerces.parsers.saxparser; 5 6 public class SAXParserDemo { 7 public void performdemo(string uri) { 8 System.out.println("Przetwarzanie pliku XML: " + uri + "\n\n"); 9 10 try { 11 XMLReader parser = new SAXParser(); 12 parser.parse(uri); 13 } catch (IOException e) { System.out.println("Blad przy wczytywaniu URI : " + e.getmessage()); } 14 catch (SAXException e) { System.out.println("Blad w przetwarzaniu: " + e. getmessage()); } 15 } 16 public static void main(string[] args) { 17 if (args.length!= 1) { 18 System.out.println("Uzycie: java SAXParserDemo [XML URI]"); 19 System.exit(0); 20 } 21 String uri = args[0]; 22 SAXParserDemo parserdemo = new SAXParserDemo(); 23 parserdemo.performdemo(uri); 24 } 25 }

11 W klasach SAX 1.0 zdefiniowano główny interfejs przetwarzajacy jako Parser i stad wiele zmiennych również odziedziczyło nazwę typu parser zamiast reader Kiedy parser jest już załadowany i gotowy do wykorzystania, można przekazać mu do przetworzenia dokument. Służy do tego metoda parse(), wchodzaca w skład klasy org.xml.sax.xmlreader. W parserze SAX musimy zarejestrować procedury obsługi (ang. handlers). Procedura obsługi to po prostu grupa wywołań wstecznych zdefiniowanych w ramach interfejsu SAX i umożliwiajacych wywoływanie kodu aplikacji w przypadku zajścia konkretnych zdarzeń w czasie przetwarzania dokumentu. Wywołania te będa następowały w czasie przetwarzania dokumentu, a nie po jego przetworzeniu. SAX umożliwia obsługę dokumentu sekwencyjnie, bez konieczności wczytywania go całego do pamięci. Procedury obsługi W interfejsie SAX 2.0 istnieja cztery podstawowe procedury obsługi: org.xml.sax.contenthandler obsługa standardowych zdarzeń zwiazanych z danymi dokumentu XML org.xml.sax.errorhandler obsługa błędów znalezionych w dokumencie org.xml.sax.dtdhandler obsługa DTD org.xml.sax.entityresolver służy do tłumaczenia encji zewnętrznych wstawionych do dokumentu XML Każdy z tych interfejsów może zostać zaimplementowany w klasach aplikacji wykonujacych specyficzne zadania. Klasy implementacyjne rejestrowane sa w parserze metodami set(...)handler().

12 Interfejs ContentHandler W interfejsie org.xml.sax.contenthandler zdefiniowano szereg istotnych metod cyklu przetwarzania, na które nasza aplikacja może reagować. Listing 2: setcontenthandler 1 public void performdemo(string uri) { 2 ContentHandler contenthandler = new MyContentHandler(); 3 try { 4 XMLReader parser = new SAXParser(); 5 parser.setcontenthandler(contenthandler); 6 parser.parse(uri); 7 } catch (IOException e) { System.out.println("Blad przy wczytywaniu URI: " + e.getmessage()); } 8 catch (SAXException e) { System.out.println("Blad w przetwarzaniu: " + e. getmessage()); } 9 }

13 Listing 3: class MyContentHandler 1 class MyContentHandler implements ContentHandler { 2 private Locator locator; 3 public void setdocumentlocator(locator locator) { } 4 public void startdocument() throws SAXException { } 5 public void enddocument() throws SAXException { } 6 public void processinginstruction(string target, String data) throws SAXException { } 7 public void startprefixmapping(string prefix, String uri) { } 8 9 public void endprefixmapping(string prefix) { } public void startelement(string namespaceuri, String localname, String rawname, Attributes atts) 12 throws SAXException { } public void endelement(string namespaceuri, String localname, String rawname) 15 throws SAXException { } 16 public void characters(char[] ch, int start, int end) 17 throws SAXException { } 18 public void ignorablewhitespace(char[] ch, int start, int end) 19 throws SAXException { } 20 public void skippedentity(string name) throws SAXException { } 21 }

14 Klasa org.xml.sax.locator udostępnia szereg metod takich jak getlinenumber() i getcolumnnumber(), zwracajacych bieżace miejsce w dokumencie XML. Klasy tej powinno się używać wyłacznie w zakresie implementacji ContentHandler startdocument() wywoływana jest przed wszelkimi innymi wywołaniami wstecznymi, również przed tymi znajdujacymi się w innych procedurach obsługi SAX enddocument() jest zawsze wywoływana jako ostatnia, również bez względu na procedurę obsługi. Obejmuje to także sytuacje, w których proces przetwarzania zostaje zatrzymany w wyniku napotkania błędów. 1 public void startdocument() throws SAXException 2 { System.out.println("Rozpoczyna sie przetwarzanie..."); } 3 4 public void enddocument() throws SAXException 5 { System.out.println("...Przetwarzanie skonczone."); } Jedyny wyjatek zgłaszany przez SAX to SAXException

15 Instrukcja przetwarzania 1 public void processinginstruction(string target, String data) throws SAXException 2 { System.out.println("PI: Obiekt docelowy:" + target + " i dane:" + data); } Uwaga: deklaracji XML to instrukcja przetwarzania udostępniajaca wersję, opcjonalne informacje o kodowaniu oraz o tym, czy dany dokument jest dokumentem samodzielnym: <?xml version="1.0"encoding="utf-8"standalone="yes"?> Instrukcja ta przeznaczona jest specjalnie dla parsera XML. Umożliwia zgłoszenie błędu (np. o nieobsługiwanej wersji) na samym poczatku przetwarzania. Ponieważ instrukcja ta obsługiwana jest tylko przez parser, nie powoduje wywołania processinginstruction(). Należy uważać, aby nie stworzyć kodu oczekujacego tej instrukcji lub informacji o wersji, ponieważ aplikacja nigdy nie otrzyma wywołania wstecznego do tej instrukcji przetwarzania.

16 Obsługa przestrzeni nazw. Odwzorowanie przedrostków (prefix mapping) to po prostu element, w którym za pomoca atrybutu xmlns deklarowana jest przestrzeń nazw. Wywołanie startprefixmapping(string prefix, String uri) otrzymuje przedrostek przestrzeni nazw oraz identyfikator URI skojarzony z tym przedrostkiem. Odwzorowanie uznawane jest za zamknięte, gdy zamknięty zostaje element deklarujacy to odwzorowanie. endprefixmapping(string prefix) oznacza napotkanie końca odwzorowania i pojawia się bezpośrednio po znaczniku zamykajacym elementu, w którym zadeklarowano odwzorowanie. 1 <glowny> 2 <element1> 3 <mojaprzestrzennazw:element2 xmlns:mojaprzestrzennazw=" "> 4 <mojaprzestrzennazw:element3>tu jakies dane</ mojaprzestrzennazw:element3> 5 </mojaprzestrzennazw:element2> 6 </element1> 7 </glowny>

17 Wywołania zwiazane z elementami startelement(string namespaceuri, String localname, String rawname, Attributes atts) informuje aplikację o elemencie XML i ewentualnych jego atrybutach. Parametry wywołania to nazwa elementu (w różnych postaciach) oraz egzemplarz klasy org.xml.sax.attributes (zawiera referencje do wszystkich atrybutów elementu i umożliwia przetwarzanie kolejnych atrybutów elementu w postaci podobnej do Vector). Oprócz możliwości odwołania się do atrybutu za pomoca indeksu, możliwe jest również odwołanie się poprzez nazwę. Metody pomocnicze, takie jak geturi(int index) i getlocalname(int index), dzięki którym można uzyskać dodatkowe informacje o przestrzeni nazw zwiazanej z danym atrybutem. Cały interfejs Attributes stanowi więc wszechstronne źródło danych o atrybutach elementu. Uwaga: Podczas iteracji po implementacji klasy Attributes atrybuty niekoniecznie będa pojawiały się w kolejności, w jakiej zostały przetworzone (czyli w takiej, w jakiej wpisano je do dokumentu). 1 public void startelement(string namespaceuri, String localname, String rawname, Attributes atts) 2 throws SAXException { 3 System.out.print("startElement: " + localname); 4 if (!namespaceuri.equals("")) 5 { System.out.println(" w przestrzeni nazw " + namespaceuri + " (" + rawname + ")"); } 6 else { System.out.println(" nie posiada skojarzonej przestrzeni nazw"); } 7 8 for (int i=0; i<atts.getlength(); i++) 9 System.out.println(" Atrybut: " + atts.getlocalname(i) + "=" + atts. getvalue(i)); 10 }

18 Dane elementu SAX Podsumowanie Przypomnienie Wstęp Obsługa błędów Kolejny przykład Kolejny prz Dane składaja się zazwyczaj z kolejnych elementów, danych tekstowych lub obu jednocześnie. Kiedy pojawiaja się kolejne elementy, następuja dla nich odpowiednie wywołania i rozpoczyna się proces pseudorekurencyjny elementy zagnieżdżone w elementach powoduja wywołania zagnieżdżone w wywołaniach. W pewnej chwili parser napotyka dane tekstowe. Informacje takie przeważnie sa wyświetlane lub służa do zbudowania odpowiedzi. W XML-u dane tekstowe w elementach przesyłane sa do aplikacji za pomoca wywołania characters(). Metoda ta udostępnia aplikacji tablicę znaków oraz indeksy poczatkowy i końcowy, które wskazuja, gdzie należy odczytać odpowiednie dane. Interfejs i standard SAX nie definiuja ściśle, jak korzystać z tego wywołania przy przetwarzaniu większych ilości danych tekstowych. Parser może zwrócić długi ciag danych w jednym wywołaniu lub rozbić dane na wiele wywołań. Dla danego elementu metoda ta może zostać wywołana zero razy (jeśli element nie zawiera danych tekstowych) albo jeden lub więcej razy. Wszysko zależy od konkretnego parsera. 1 public void characters(char[] ch, int start, int end) 2 throws SAXException { 3 String s = new String(ch, start, end); 4 System.out.println("znaki: " + s); 5 }

19 1 <macierzysty> 2 To jest 3 <potomny>zagniezdzony tekst</potomny> 4 dalszy tekst 5 </macierzysty> Efekt parsowania: 1 startelement: macierzysty nie posiada skojarzonej przestrzeni nazw. 2 znaki: To jest. 3 startelement: potomny nie posiada skojarzonej przestrzeni nazw. 4 znaki: zagniezdzony tekst. 5 endelement: potomny. 6 znaki: dalszy tekst. 7 endelement: macierzysty. SAX nie wybiega z przetwarzaniem naprzód, a wiec wynik jest dokładnie taki, jaki uzyskalibyśmy czytajac dokument XML sekwencyjnie, bez ludzkich przyzwyczajeń.

20 Można również dodać obsługę białych znaków: 1 public void ignorablewhitespace(char[] ch, int start, int end) 2 throws SAXException 3 { 4 String s = new String(ch, start, end); 5 System.out.println("ignorableWhitespace: [" + s + "]"); 6 } oraz pominiętych encji 1 public void skippedentity(string name) throws SAXException { 2 System.out.println("Pomijam encje " + name); 3 } Większość istniejacych parserów nie pomija encji, nawet jeśli nie sa to parsery sprawdzajace poprawność. Jeśli znajdziemy parser, który korzysta z powyższego wywołania, należy pamiętać, że przekazany parametr nie zawiera otwierajacego znaku & ani końcowego średnika.

21 Oprócz interfejsu ContentHandler, SAX udostępnia również interfejs ErrorHandler, służacy do obsługi sytuacji awaryjnych zaistniałych w czasie przetwarzania. Zdefiniowano w niej jedynie trzy wywołania wsteczne warning, error i fatalerror. Każda metoda otrzymuje informacje o błędzie lub ostrzeżeniu poprzez klasę SAXParseException. Obiekt ten zawiera numer wiersza, w którym wystapił bład, identyfikator URI przetwarzanego dokumentu oraz zwykłe informacje o błędzie, takie jak komunikat i dane ze śledzenia stosu. Każda metoda może zgłosić SAXException. Każda z procedur obsługi błędów otrzymuje wyjatki zwiazane z przetwarzaniem. Może to być ostrzeżenie, które nie powinno przerwać procesu przetwarzania, lub bład, który należy rozwiazać, aby to przetwarzanie mogło być kontynuowane. Jednak wywołanie takie może także wykonywać operacje wejścia-wyjścia lub inne, które moga spowodować zgłoszenie wyjatku - i wyjatek ten należy przekazać aż na sama górę, do aplikacji. Służy do tego właśnie wyjatek SAXException.

22 Listing 4: ErrorHandler.java cd. 1 import org.xml.sax.errorhandler; 2 import org.xml.sax.saxparseexception; 3 4 class MyErrorHandler implements ErrorHandler { 5 public void warning(saxparseexception exception) 6 throws SAXException { } 7 public void error(saxparseexception exception) 8 throws SAXException { } 9 public void fatalerror(saxparseexception exception) 10 throws SAXException { } 11 } public class SAXParserDemo { 14 (...) 15 ContentHandler contenthandler = new MyContentHandler(); 16 ErrorHandler errorhandler = new MyErrorHandler(); try { 19 XMLReader parser = new SAXParser(); 20 parser.setcontenthandler(contenthandler); 21 parser.seterrorhandler(errorhandler); 22 (...) 23 } 24 }

23 Ostrzeżenia: za każdym razem, gdy pojawi się ostrzeżenie (wynikajace ze specyfikacji XML 1.0), metoda ta wywoływana jest w zarejestrowanej procedurze obsługi błędów. Wszystkie sytuacje generujace ostrzeżenia zwiazane sa z definicjami DTD i poprawnościa składniowa dokumentu Błędy niekrytyczne występuja w czasie przetwarzania. Można je naprawić, ale stanowia pogwałcenie fragmentu specyfikacji XML, postrzegane sa jako błędy niekrytyczne. Procedura obsługi błędów powinna je przynajmniej odnotować w pliku dziennika Błędy krytyczne to te, które wymuszaja zatrzymanie działania parsera. Zazwyczaj wynikaja z niepoprawnego sformatowania dokumentu i ich pojawienie się oznacza, że albo dalsze przetwarzanie nie ma sensu, albo jest technicznie niemożliwe.

24 Ładowanie parsera SAX Podsumowanie Przypomnienie Wstęp Obsługa błędów Kolejny przykład Kolejny prz W pierwotnym przykładzie importowana była implementacja klasy XMLReader apacha: import org.apache.xerces.parsers.saxparser; Takiego kodu nie da się uruchomić, a nawet skompilować na platformie nie wykorzystujacej parsera Apache Xerces - kod nie jest przenośny Zaleca się stworzenie egzemplarza klasy o nazwie klasy pobranej z implementacji. 1 import org.xml.sax.helpers.xmlreaderfactory; 2 (...) 3 XMLReader parser = XMLReaderFactory.createXMLReader 4 (PropertiesReader().getInstance().getProperty("parserClass"));

25 Listing 5: AddressBook.xsl 1 <?xml version = "1.0"?> 2 <addressbook> 3 <person> 4 <lastname>romanczukiewicz</lastname> 5 <firstname>tomasz</firstname> 6 <company>wydzial FAIS, UJ</company> 7 8 </person> 9 </addressbook> Użycie SAX Stworzenie odpowiedniego modelu danych (klassy Person i AddressBook Stworzenie Parsera Stworzenie pocedur obsługi

26 Listing 6: AddressBook.java 1 import java.util.*; 2 public class AddressBook 3 { 4 List persons = new java.util.arraylist(); 5 public void addperson( Person p ) { persons.add( p ); } 6 public int getsize() { return persons.size(); } 7 public Person getperson( int i ) { return (Person)persons.get( i ); } 8 9 public String toxml(){ 10 StringBuffer sb = new StringBuffer(); 11 sb.append( "<?xml version=\"1.0\"?>\n" ); 12 sb.append( "<ADDRESSBOOK>\n\n" ); 13 for(int i=0; i<persons.size(); i++) { 14 sb.append( getperson(i).toxml() ); 15 sb.append( "\n" ); 16 } 17 sb.append( "</ADDRESSBOOK>" ); 18 return sb.tostring(); 19 } 20 } Ksiazka adresowa - lista osób (Person)

27 Listing 7: Person.java 1 public class Person 2 { 3 String fname, lname, company, ; 4 5 public String getcompany(){return company;} 6 public String get (){return ;} 7 public String getfirstname(){return fname;} 8 public String getlastname(){return lname;} 9 10 public void setlastname( String s ){lname = s;} 11 public void setfirstname( String s ){fname = s;} 12 public void setcompany( String s ){company = s;} 13 public void set ( String s ){ = s;} public String toxml(){ 16 StringBuffer sb = new StringBuffer(); 17 sb.append( "<PERSON>\n" ); 18 sb.append( "\t<lastname>"+lname+"</lastname>\n" ); 19 sb.append( "\t<firstname>"+fname+"</firstname>\n" ); 20 sb.append( "\t<company>"+company+"</company>\n" ); 21 sb.append( "\t< >"+ +"</ >\n" ); 22 sb.append( "</PERSON>\n" ); 23 return sb.tostring(); 24 } 25 } / / end o f Person c l a s s Klasa Person zawiera informacje jakie sa zawarte w ksiazce adresowej.

28 Listing 8: SaxAddressBookHandler.java 1 import java.io.*; 2 import org.xml.sax.*; 3 import org.xml.sax.helpers.parserfactory; 4 import com.sun.xml.parser.resolver; 5 6 public class SaxAddressBookHandler extends HandlerBase{ 7 8 private AddressBook ab = new AddressBook(); 9 private Person p = null; / / temp Person r e f 10 private String currentelement = null; / / c u r r e n t e l e m e n t name 11 public AddressBook getaddressbook(){ return ab; } 12 public void startdocument() throws SAXException{ debugdisplay( "start doc" ); } 13 public void enddocument() throws SAXException{ debugdisplay( "end doc" ); }

29 Listing 9: SaxAddressBookHandler.java cd. 1 public void startelement( String name, AttributeList atts ){ 2 3 debugdisplay( "<start elem:"+name+">"); 4 if( name.equalsignorecase("lastname") ) 5 { currentelement = "LASTNAME"; } 6 else if( name.equalsignorecase("firstname") ) 7 { currentelement = "FIRSTNAME"; } 8 else if( name.equalsignorecase("company") ) 9 { currentelement = "COMPANY"; } 10 else if( name.equalsignorecase(" ") ) 11 { currentelement = " "; } 12 else if( name.equalsignorecase("person") ) 13 { p = new Person(); } 14 } public void endelement( String name ){debugdisplay( "</"+name+">" ); 17 if( name.equalsignorecase("person") ) { 18 ab.addperson( p ); 19 p = null; 20 } 21 } Po napotkaniu odpowiedniego elementu ustawiamy zmienna currentelement Jeśli danym elementem jest Person to tworzymy nowy obiekt klasy Person, który zostanie dodany do ksiażki adresowej po napotkaniu końca elementu Person.

30 Listing 10: SaxAddressBookHandler.java cd. 1 public void characters( char ch[], int start, int length ){ 2 String value = new String( ch, start, length ); 3 if(!value.trim().equals("")) { 4 if( currentelement.equalsignorecase("firstname") ) 5 { p.setfirstname( value ); } 6 else if( currentelement.equalsignorecase("lastname") ) 7 { p.setlastname( value ); } 8 else if( currentelement.equalsignorecase("company") ) 9 { p.setcompany( value ); } 10 else if( currentelement.equalsignorecase(" ") ) 11 { p.set ( value ); } 12 } Zawartość tekstowa z dokumentu XML przepisujemy do odpowiedniej zmiennej obektu Person, w zależności od wartości zmiennej currentelement

31 Sprawdzanie poprawności W interfejsie SAX 2.0 zdefiniowano standardowy mechanizm do ustawiania istotnych właściwości i cech parsera. Umożliwia on dodawanie nowych właściwości i cech w miarę przyjmowania ich przez W3C, bez konieczności stosowania własnych metod lub rozszerzeń. Listing 11: Parsowanie 1 try { 2 XMLReader parser = 3 XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser"); 4 parser.setcontenthandler(contenthandler); 5 parser.seterrorhandler(errorhandler); 6 parser.setfeature(" true); 7 parser.parse(uri); 8 } catch (IOException e) 9 { System.out.println("Blad przy wczytywaniu URI: " + e.getmessage()); } 10 catch (SAXException e) 11 { System.out.println("Blad w przetwarzaniu: " + e.getmessage()); 12 }

32 Metody do obsługi właściwości i cech parsera parser.setproperty([uri wlasciwosci], [Parametr obiektu]); parser.setfeature([uri cechy], true); parser.getproperty([uri wlasciwosci]); parser.getfeature([uri cechy]) W każdej z powyższych metod identyfikatorem ID określonej właściwości lub cechy jest identyfikator URI Producent parsera XML powinien udostępnić dodatkowa dokumentację informujaca o obsługiwanych cechach i właściwościach. Dobry parser umożliwi korzystanie z nich bez posiadania połaczenia z siecia. W tym sensie identyfikatory URI można postrzegać jako proste stałe, które akurat maja format URI.

33 Plan SAX Podsumowanie 1 SAX 2 Podsumowanie

34 SAX Podsumowanie Interfejs programistyczny do sekwencyjnego parsowania dokumentów XML. Działa jako parser strumieniowy sterowany zdarzeniami. Przetwarzanie z użyciem SAX jest jednokierunkowe SAX został zaimplementowany w wielu językach obiektowych W przeciwieństwie do DOMa nie wymaga dużych zasobów systemowych i zazwyczaj działa dużo szybciej. Nie można jednak łatwo poruszać się po strukturze dokumentu. Programista definiu metody przechwytywania zdarzeń takich zgłaszanych przez parser takich jak poczatek/koniec elementu, instrukcje przetwarzania, przestrzenie nazw Umożliwia kontrolę wyjatków Można stosowac do sprawdzania poprawności dokumentów

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Wykorzystywanie parsera DOM w programach Java i PL/SQL Wykorzystywanie parsera DOM w programach Java i PL/SQL Maciej Zakrzewicz mzakrz@cs.put.poznan.pl http://www.cs.put.poznan.pl/~mzakrz/ Parser DOM Aplikacja DOM API Parser DOM Dokument XML Drzewo DOM Parser

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML Perl a XML Narzędzia informatyczne w językoznawstwie Perl - Przetwarzanie XML Marcin Junczys-Dowmunt junczys@amu.edu.pl Zakład Logiki Stosowanej http://www.logic.amu.edu.pl 31 modułów w CPAN zawiera w

Bardziej szczegółowo

SAX i DOM wykorzystanie XML-a we własnych aplikacjach. Simple API for XML Parsing Document Object Model

SAX i DOM wykorzystanie XML-a we własnych aplikacjach. Simple API for XML Parsing Document Object Model SAX i DOM wykorzystanie XML-a we własnych aplikacjach Simple API for XML Parsing Document Object Model 1 SAX - wstęp Definicja: standardowy interfejs do parsowania plików XML oparty na modelu zdarzeniowym

Bardziej szczegółowo

Procesowanie dokumentów XML

Procesowanie dokumentów XML Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Procesowanie dokumentów XML Programowanie w Javie 2 mgr inż. Michał Misiak Cechy XML Sformalizowany zapis informacji restrykcyjne

Bardziej szczegółowo

Podstawy XML-a. Zaawansowane techniki programowania

Podstawy XML-a. Zaawansowane techniki programowania Podstawy XML-a Zaawansowane techniki programowania Dokumenty XML XML = ang. Extensible Markup Language rozszerzalny język znaczników

Bardziej szczegółowo

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

JAVA I XML ZAGADNIENIA: DOM, SAX, JAXB, XMLDecoder i XMLEncoder, ANT. JAVA I XML ZAGADNIENIA: DOM, SAX, JAXB, XMLDecoder i XMLEncoder, ANT. MATERIAŁY: http://www.mkyong.com/tutorials/java-xml-tutorials/ http://ant.apache.org http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA,

Bardziej szczegółowo

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie

Bardziej szczegółowo

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

Wykład 8: Obsługa Wyjątków Wykład 8: Obsługa Wyjątków Wyjątki Wyjątek to sytuacja nienormalna, która pojawia się w trakcie wykonania programu. W językach bez obsługi wyjątków, błędy są wykrywane i obsługiwane ręcznie, zwykle przez

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

KLASY, INTERFEJSY, ITP

KLASY, INTERFEJSY, ITP KLASY, INTERFEJSY, ITP ZAGADNIENIA: Klasy, modyfkatory dostępu, pakiety. Zmienne i metody statyczne. Klasy abstrakcyjne, dziedziczenie. Interfejsy. Komentarze i javadoc, http://th-www.if.uj.edu.pl/zfs/ciesla/

Bardziej szczegółowo

XML i Java 1. XML. 1.1. Budowa dokumentu XML. Projektowanie systemów informatycznych

XML i Java 1. XML. 1.1. Budowa dokumentu XML. Projektowanie systemów informatycznych 1. XML 1.1. Budowa dokumentu XML XML i Java XML (ang. Extensible Markup Language) rozszerzalny język znaczników. Jest to standard mający bardzo szeroki zakres zastosowań. Dokument XML składa się z następujących

Bardziej szczegółowo

Modele dostępu do dokumentu XML. Implementacja modelu parser. SAX2 pakiet org.xml.sax. Działanie modelu SAX przykład

Modele dostępu do dokumentu XML. Implementacja modelu parser. SAX2 pakiet org.xml.sax. Działanie modelu SAX przykład Modele dostępu do dokumentu XML Wykorzystanie XML-a we własnych aplikacjach Pozwalają programistom na wysokopoziomowy dostęp do zawartości dokumentów XML : korzystamy z abstrakcyjnych obiektów, nie troszczymy

Bardziej szczegółowo

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

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1 Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami

Bardziej szczegółowo

Wykład 7: Pakiety i Interfejsy

Wykład 7: Pakiety i Interfejsy Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

XML w.net. Dominik Baś nr alb. 160345. Wrocław, 29 maja 2007

XML w.net. Dominik Baś nr alb. 160345. Wrocław, 29 maja 2007 XML w.net Dominik Baś nr alb. 160345 Wrocław, 29 maja 2007 Przetwarzanie dokumentów XML API: SAX Simple Api for XML - przetwarzanie strumieniowe DOM - Document Object Model - odwzorowanie dokumentu XML

Bardziej szczegółowo

Wyjątki (exceptions)

Wyjątki (exceptions) Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1 Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego

Bardziej szczegółowo

akademia androida Składowanie danych część VI

akademia androida Składowanie danych część VI akademia androida Składowanie danych część VI agenda 1. SharedPreferences. 2. Pamięć wewnętrzna i karta SD. 3. Pliki w katalogach /res/raw i /res/xml. 4. Baza danych SQLite. 5. Zadanie. 1. SharedPreferences.

Bardziej szczegółowo

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

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 05

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 05 Plan Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 05 T. Romańczukiewicz Jagiellonian University 2009/2010 Plan Plan 1 DOM 2 DOM w innych językach 3 Podsumowanie Plan DOM DOM w innych

Bardziej szczegółowo

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

libxml2 parser DOM dla C++ czwartek, 8 grudnia 11

libxml2 parser DOM dla C++ czwartek, 8 grudnia 11 libxml2 parser DOM dla C++ 1 SAX vs. DOM Dwa podstawowe typy API do przetwarzania dokumentów XML: Oparte na drzewach (ang. Tree-based API) - mapują strukturę dokumentu do drzewa i pozwalają użytkownikowi

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych Katedra Mikroelektroniki i Technik Informatycznych Łódź, 14 października 2005 roku Wstęp DOM Document Object Model zapewnia: Zbiór obiektów reprezentujących dokumenty XML i HTML. Model łączenia obiektów.

Bardziej szczegółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Plan prezentacji. Przetwarzanie dokumentów XML JAXP SAX JAXP SAX DOM STAX XSLT. Przedmiot: XML i jego zastosowania. Dr inż. Stanisław Polak JAXB

Plan prezentacji. Przetwarzanie dokumentów XML JAXP SAX JAXP SAX DOM STAX XSLT. Przedmiot: XML i jego zastosowania. Dr inż. Stanisław Polak JAXB Plan prezentacji Przedmiot: XML i jego zastosowania Dr inż. Stanisław Polak JAXP SAX DOM STAX XSLT Akademia Górniczo - Hutnicza w Krakowie, Katedra Informatyki http://www.icsr.agh.edu.pl/~polak/ JAXB Inne

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów

Bardziej szczegółowo

Systemy Rozproszone - Ćwiczenie 6

Systemy Rozproszone - Ćwiczenie 6 Systemy Rozproszone - Ćwiczenie 6 1 Obiekty zdalne Celem ćwiczenia jest stworzenie obiektu zdalnego świadczącego prostą usługę nazewniczą. Nazwy i odpowiadające im punkty końcowe będą przechowywane przez

Bardziej szczegółowo

XML we własnych aplikacjach

XML we własnych aplikacjach XML we własnych aplikacjach Patryk Czarnik Instytut Informatyki UW XML i nowoczesne technologie zarządzania treścią 2008/09 Wykorzystanie XML we własnych aplikacjach Odczyt zawartości dokumentów XML. Modyfikacja

Bardziej szczegółowo

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Ćwiczenie 1. Kolejki IBM Message Queue (MQ) Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając

Bardziej szczegółowo

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4 Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 Temat: Wątki Czym są wątki. Grafika. Proste animacje. Małe podsumowanie materiału.

Bardziej szczegółowo

WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu.

WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu. WYJĄTKI Klasa Throwable Exception Error Klasy dziedziczące po klasie Exception są typami wyjątków, które automatycznie obsługuje Java lub program przy jawnym przechwytywaniu i obsłudze wyjątków w blokach

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Katalog książek cz. 2

Katalog książek cz. 2 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.

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

Wykład 2: Podstawy Języka

Wykład 2: Podstawy Języka Wykład 2: Podstawy Języka 1.wprowadzenie 2.podstawy języka 3.sterowanie 4.inicjacja i sprzątanie 5.kontrola dostępu 6.dziedziczenie 7.polimorfizm 8.obsługa błędów 9.kolekcje obiektów 10.wejście i wyjście

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych 2. Tablice Tablica to struktura danych przechowująca elementy jednego typu (jednorodna). Dostęp do poszczególnych elementów składowych jest możliwy za pomocą indeksów. Rozróżniamy następujące typy tablic:

Bardziej szczegółowo

Biblioteki dzielone, XML i readline

Biblioteki dzielone, XML i readline Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania

Bardziej szczegółowo

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

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język

Bardziej szczegółowo

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis MATERIAŁY DO ZAJĘĆ I Podstawowe pojęcia Spis treści I. Algorytm II. Schemat blokowy III. Struktury danych IV. Program komputerowy V. Opis środowiska programistycznego VI. Obsługa wejścia wyjścia VII. Przykład

Bardziej szczegółowo

Ada-95. Dariusz Wawrzyniak

Ada-95. Dariusz Wawrzyniak Część I Wskaźniki Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Wskaźniki

Bardziej szczegółowo

Wykład 4. Tablice. Pliki

Wykład 4. Tablice. Pliki Informatyka I Wykład 4. Tablice. Pliki Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada

Bardziej szczegółowo

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne import javax.swing.*; import java.util.*; public class Napis4 { String wynik = ""; static int ile_obiektow

Bardziej szczegółowo

Efekty uboczne błędów

Efekty uboczne błędów Obsługa wyjątków Efekty uboczne błędów Fragment kodu programu jest bezpieczny (ang. exception-safe) jeżeli błędy, które wystąpią w trakcie przetwarzania tego kodu nie będą powodowały niepożądanych efektów

Bardziej szczegółowo

Wstęp do Programowania 2

Wstęp do Programowania 2 Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:

Bardziej szczegółowo

Podejście obiektowe do budowy systemów rozproszonych

Podejście obiektowe do budowy systemów rozproszonych Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak 1 Mechanizm RMI umożliwia

Bardziej szczegółowo

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

XML we własnych aplikacjach

XML we własnych aplikacjach XML we własnych aplikacjach Patryk Czarnik Instytut Informatyki UW XML i nowoczesne technologie zarzadzania treścia 2008/09 Patryk Czarnik 09 Programy XML 2008/09 1 / 1 Wprowadzenie XML we własnych aplikacjach

Bardziej szczegółowo

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,

Bardziej szczegółowo

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Literatura Języki i paradygmaty programowania Wykład 2 1. C. S. Horstman, G. Cornell, core Java 2 Podstawy, Helion 2003

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka stub interfejs serwer szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment

Bardziej szczegółowo

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ] JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA Marcin Lewandowski [ mlew@ippt.gov.pl ] XML 2 XML XML jest formatem tekstowym Zjadliwy dla ludzi Zawiera treść (dane) oraz znaczniki (markup) Znaczniki i zależności

Bardziej szczegółowo

Pakiety i interfejsy. Tomasz Borzyszkowski

Pakiety i interfejsy. Tomasz Borzyszkowski Pakiety i interfejsy Tomasz Borzyszkowski Pakiety podstawy W dotychczasowych przykładach nazwy klas musiały pochodzić z jednej przestrzeni nazw, tj. być niepowtarzalne tak, by nie doprowadzić do kolizji

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w

Bardziej szczegółowo

XML i Java. Technologie zarządzania treścią. dr inż. Robert Perliński rperlinski@icis.pcz.pl

XML i Java. Technologie zarządzania treścią. dr inż. Robert Perliński rperlinski@icis.pcz.pl XML i Java Technologie zarządzania treścią dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki Teoretycznej i Stosowanej XML i Java 2/57 SAX vs. DOM Dwa podstawowe

Bardziej szczegółowo

Ćwiczenie 1. Przygotowanie środowiska JAVA

Ćwiczenie 1. Przygotowanie środowiska JAVA Ćwiczenie 1 Przygotowanie środowiska JAVA 1. Wprowadzenie teoretyczne Instalacja JDK (Java Development Kit) NaleŜy pobrać z java.sun.com środowisko i zainstalować je. Następnie naleŝy skonfigurować środowisko.

Bardziej szczegółowo

Definicje klas i obiektów. Tomasz Borzyszkowski

Definicje klas i obiektów. Tomasz Borzyszkowski Definicje klas i obiektów Tomasz Borzyszkowski Podstawy Do tej pory używaliśmy klas jedynie po to, by zdefiniować metodę main(). Klasy mają znacznie szersze zastosowanie w Java. W OOP (także w Java) klasy

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

SOAP. Autor: Piotr Sobczak

SOAP. Autor: Piotr Sobczak SOAP Autor: Piotr Sobczak AGENDA: Trochę o Web Services Wprowadzenie do SOAP Anatomia komunikatu SOAP Wysyłanie i otrzymywanie komunikatu SOAP oraz API Javy w przykładach SOAP z załącznikami SOAP-RPC Obsługa

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje

Bardziej szczegółowo

UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz Po zrealizowaniu materiału student będzie w stanie Prawidłowo zidentyfikować składowe dokumentu XML Utworzyć dokument XML Dokonać sprawdzenia poprawności składniowej (syntaktycznej) dokumentu 2 1 WWW Consortium,

Bardziej szczegółowo

29. Poprawność składniowa i strukturalna dokumentu XML

29. Poprawność składniowa i strukturalna dokumentu XML 29. i strukturalna dokumentu XML 13 października 2015 1 2 Poprawny składniowo dokument XML powinien być tworzony zgodnie z poniżej przedstawionymi zasadami. Deklaracja XML Powinien zawierać deklarację

Bardziej szczegółowo

Podstawy języka XML. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Podstawy języka XML. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz Podstawy języka XML Cel zajęć Po zrealizowaniu materiału student będzie w stanie Prawidłowo zidentyfikować składowe dokumentu XML Utworzyć dokument XML Dokonać sprawdzenia poprawności składniowej (syntaktycznej)

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

Bardziej szczegółowo

Tworzenie i wykorzystanie usług

Tworzenie i wykorzystanie usług Strona 1 Co to jest usługa w systemie Android? Usługi HTTP Obsługa wywołania HTTP GET Obsługa wywołania HTTP POST Obsługa wieloczęściowego wywołania HTTP POST Usługi lokalne Usługi zdalne Tworzenie usługi

Bardziej szczegółowo

Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema Globalne i lokalne deklaracje elementów i atrybutów Deklaracje lokalne:

Bardziej szczegółowo

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować

Bardziej szczegółowo

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

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1). Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1). Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię usług sieciowych (ang. Web Services).

Bardziej szczegółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Java EE produkcja oprogramowania

Java EE produkcja oprogramowania Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

Platformy Programistyczne Podstawy języka Java

Platformy Programistyczne Podstawy języka Java Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo

Bardziej szczegółowo

Aplikacja wielowątkowa prosty komunikator

Aplikacja wielowątkowa prosty komunikator Aplikacja wielowątkowa prosty komunikator Klient 0 (host 1) Wątek 0 Komponent serwera Wątek pochodny 3.1 Klient 1 (host 2) Wątek 1 Komponent serwera Wątek pochodny 3.2 Host 4 Serwer Wątek 3 Klient 2 (host

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017 Wykład 7 25 kwietnia 2017 Dokumentowanie kodu Program javadoc Java jest wyposażona w generator dokumentacji który na podstawie odpowiednio napisanych komentarzy w kodzie programu (które jednak nie sa konieczne),

Bardziej szczegółowo

PHP: bloki kodu, tablice, obiekty i formularze

PHP: bloki kodu, tablice, obiekty i formularze 1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują

Bardziej szczegółowo

Fragmenty są wspierane od Androida 1.6

Fragmenty są wspierane od Androida 1.6 W androidzie można tworzyć dynamiczne interfejsy poprzez łączenie w moduły komponentów UI z aktywnościami. Moduły takie tworzy się za pomocą klasy Fragment, która zachowuje się jak zagnieżdżone aktywności

Bardziej szczegółowo