Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 06
|
|
- Daniel Karczewski
- 9 lat temu
- Przeglądów:
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 < >trom@th.if.uj.edu.pl</ > 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 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
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
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
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................
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
Podstawy XML-a. Zaawansowane techniki programowania
Podstawy XML-a Zaawansowane techniki programowania Dokumenty XML XML = ang. Extensible Markup Language rozszerzalny język znaczników
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,
Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu
Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Programowanie Obiektowe Ćwiczenie 4
Programowanie Obiektowe Ćwiczenie 4 1. Zakres ćwiczenia wyjątki kompozycja 2. Zagadnienia Założeniem, od którego nie należy odbiegać, jest by każdy napotkany problem (np. zatrzymanie wykonywanej metody)
Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019
Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości
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
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
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
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,
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
Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane
Extensible Markup Language (XML) Wrocław, 15.03.2019 - Java - technologie zaawansowane Wprowadzenie XML jest językiem znaczników (ang. markup language) używanym do definiowania zbioru zasad rozmieszczenia
JAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
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/
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
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
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,
Języki i metody programowania Java INF302W Wykład 3 (część 1)
Języki i metody programowania Java INF302W Wykład 3 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 1 STRUKTURA WYKŁADU 1. Wyjątki,
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,
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ąć
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
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
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
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,
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ę,
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
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
Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)
MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System
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
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.
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
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
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.
Podstawy i języki programowania
Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof
Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?
Zad.28. Utwórz klasę, która implementuje oba interfejsy: public void pisz ( ) ; public void pisz ( ) ; Zad.29. Utwórz klasę, która implementuje oba interfejsy: public void pisz ( int l i c z b a ) ; public
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,
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
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
Polimorfizm. dr Jarosław Skaruz
Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody
SAX2 pakiet org.xml.sax
Modele dostępu do dokumentu XML 23 października 2003 Wykorzystanie XML-a we własnych aplikacjach Pozwalają programistom na dostęp do zawartości dokumentów XML na wysokim poziomie: korzystamy z abstrakcyjnych
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
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
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
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
Tablice i łańcuchy znakowe jako obiektowe typy danych. dr Jarosław Skaruz
Tablice i łańcuchy znakowe jako obiektowe typy danych dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? Klasy String, StringBuffer, StringBuilder Tablice jednowymiarowe
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
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x()
Wykład 3. Wyjątki 1) Obsługa wyjątków system czasu przebiegu Javy przerwanie programu class Wyjatek_1 //plik Proba_1.java int x; Wyjatek_1(int x_) x = x_; int iloraz() int p = 45/x; //generowanie wyjątku
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.
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
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,
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
XML i nowoczesne technologie zarządzania treścią 2007/08
Zadanie 3 Poprawkowe XML i nowoczesne technologie zarządzania treścią 2007/08 Wprowadzenie Należy napisać program w Javie, który czytając w trybie SAX plik z listą operacji, wykonuje zadane operacje na
Programowanie obiektowe
Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie
Programowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
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
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
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
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 (IIPP) 1 Mechanizm
Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1
interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
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
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów
Dokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
DTD - encje ogólne i parametryczne, przestrzenie nazw
DTD - encje ogólne i parametryczne, przestrzenie nazw Instytut Informatyki Encje Encja (ang.entity) - uogólnienie pojęcia makrodefinicji Encje to dogodny sposób reprezentacji danych które występują wielokrotnie,
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
Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.
Aplikacje RMI Część 2 Budowa aplikacji rozproszonych http://java.sun.com/j2se/1.5.0/docs/guide/rmi/socketfactory/index.html I. Implementacja gniazd dziedziczących po Socket i ServerSocket oraz produkcji
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
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.
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,
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
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
Aplikacje RMI Lab4
Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych 1 1. Koncepcja budowy aplikacji RMI (aplikacja rozproszonych
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
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
Ć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
Remote Method Invocation 17 listopada 2010
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja klienckak interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
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
Wykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
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
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.
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:
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
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
Wyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196
Wyjątki 180 / 196 Wyjątki W Javie istnieje mechanizm tzw. wyjątków (ang. exception), który pozwala na przechwytywanie błędów pojawiających się w programie. Kompilacja tab [ 1 0 ] = 100; spowoduje powstanie
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
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
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
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
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
Obsługa błędów za pomocą wyjątków. Paweł Motofa (140746)
Obsługa błędów za pomocą wyjątków Paweł Motofa (140746) Co zrobić, gdy wystąpi błąd Przykład Co zrobić, gdy wystąpi błąd Co zrobić, gdy wystąpi błąd Co zrobić, gdy wystąpi błąd Jak wyglądałaby funkcja
Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.
Java podstawy jęyka Wykład 2 Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne. Wyjątki: obsługa błędów Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego 12.03.2015
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,
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
Specyfikacja API Runtime BAS 3.0
Specyfikacja API Runtime BAS 3.0 Spis treści Wstęp... 4 Informacja o dokumencie... 4 Opis usługi... 4 Typowy sposób wywołania usługi... 5 Udostępniane funkcje... 6 Funkcje liczące... 6 Execute... 6 SafeExecute...
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