XML i Java. Technologie zarządzania treścią. dr inż. Robert Perliński rperlinski@icis.pcz.pl
|
|
- Irena Urbaniak
- 8 lat temu
- Przeglądów:
Transkrypt
1 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
2 XML i Java 2/57 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 nawigować po tym drzewie. Oparte na zdarzeniach (ang. Event based API ) - zgłaszają zdarzenia występujące podczas parsowania (np. początek/koniec elementu). Zdarzenia są zgłaszane do aplikacji za pomocą callback u. Aplikacja implementuje metody (handlery) przechwytujace te zdarzenia w sposób podobny do obsługi zdarzeń generowanych przez GUI.
3 XML i Java 3/57 SAX vs. DOM DOM - czesto użyteczne, ale wykorzystują dużo zasobów, szczególnie w przypadku dużych dokumentów. Jesli aplikacje wykorzystują swoje własne struktury danych niekorzystne jest budowanie drzewa tylko po to, żeby na jego podstawie zbudować obiekty wewnętrznych struktur danych. SAX pozwala na parsowanie dokumentów dużo większych niż dostępne zasoby pamięciowe. Własne struktury danych mogą być tworzone za pomocą metod wykorzystywanych do obsługi zdarzeń.
4 XML i Java 4/57 Kiedy używać SAX - przykład ZADANIE: W dokumencie XML wielkosci 20MB znaleźć element zawierający słowo Częstochowa. Wykorzystanie DOM - tworzenie drzewa dla tak dużego dokumentu tylko po to, żeby znaleźć jeden element w zbiorze danych byłoby bardzo niekorzystne. Wykorzystanie SAX - możliwe znalezienie elementu (w metodach obsługi zdarzeń) wykorzystując minimalną ilość pamięci.
5 XML i Java 5/57 SAX - jak to działa. <?xml version="1.0"?> <doc> <para>hello, world!</para> </doc> Podczas przetwarzania dokumentu zgłoszone zostaną zdarzenia: 1 start document 2 start element: doc 3 start element: para 4 characters: Hello, world! 5 end element: para 6 end element: doc 7 end document
6 XML i Java 6/57 SAX SAX nie wymaga cache owania całego dokumentu. Umożliwia przechwytywanie zdarzeń parsowania tak jakby były to zdarzenia interesu użytkownika. Za pomocą API bazujacego na zdarzeniach możliwe jest utworzenie struktury drzewa i zmapowanie dokumentu XML do tej struktury.
7 XML i Java 7/57 Biblioteki XML w języku Java
8 XML i Java 8/57 Wykorzystanie modelu DOM Pakiet org.w3c.dom Interfejsy: Document - reprezentuje cały dokument XML (albo HTML), Node - podstawowy typ danych dla całego DOM, reprezentuje pojedynczy węzeł w drzewie dokumentu, NodeList - uporządkowana kolekcja węzłów (obiekty klasy Node), NamedNodeMap - kolekcja węzłów dostępnych po nazwie elementu, Element - reprezentuje element w dokumencie XML (albo HTML), może zawierać związane z nim atrybuty, dziedziczy po Node, Attr - reprezentuje atrybut w elemencie dokumentu XML.
9 XML i Java 9/57 Model DOM - Document Interfejs org.w3c.dom.document Najważniejsze metody: createelement(string nazwa) - tworzy element o określonej nazwie, createattribute(string nazwa) - tworzy atrybut o podanej nazwie, createtextnode(string data) - pozwala stworzyć węzeł tekstowy o zawartości data, createcomment(string data) - tworzy komentarz o treści data, createcdatasection(string data) - tworzy sekcje CDATA o zawartości data, createprocessinginstruction(string target, String data) - służy do tworzenia instrukcji przetwarzania o zawartości data, target oznacza cel czyli słowo określające aplikację przetwarzającą.
10 XML i Java 10/57 Model DOM - Document Interfejs org.w3c.dom.document Najważniejsze metody: getelementsbytagname(string tagname) - zwraca listę węzłów (NodeList) o nazwie znacznika tagname, getdocumentelement() - pozwala na dostęp do elementu głównego całego dokumentu, getxmlversion() - zwraca informację o wersji XML określonej w deklaracji XML dokumentu, getxmlencoding() - zwraca informację o kodowaniu określonym w deklaracji XML dokumentu, getxmlstandalone() - zwraca informację czy dokument XML jest samodzielny czy nie, setxmlstandalone(boolean xmlstandalone), setxmlversion(string xmlversion) - pozwala ustalić samodzielność i wersję dokumentu XML.
11 XML i Java 11/57 Model DOM - Node Interfejs org.w3c.dom.node, najważniejsze metody (wywoływane dla węzła): getchildnodes() - zwraca listę (NodeList) wszystkich dzieci węzła, getattributes() - zwraca listę atrybutów jako interfejs NamedNodeMap jeśli węzeł jest elementem, hasattributes() - zwraca prawdę jeśli węzeł ma jakiekolwiek atrybuty, haschildnodes() - zwraca prawdę jeśli węzeł ma jakiekolwiek dzieci, getnodename() - zwraca nazwę węzła, getnodevalue() - zwraca wartość węzła, zależnie od typu węzła, setnodevalue(string nodevalue) - pozwala ustalić wartość węzła, zależnie od jego typu, getnodetype() - zwraca typ węzła określny wartością stałej (short), normalize() - normalizauje zawartość tekstową tego węzła i wszyskich jego podwęzłów, normalizacja dotyczy również atrybutów,
12 XML i Java 12/57 Model DOM - Node Interfejs org.w3c.dom.node, najważniejsze metody (wywoływane dla węzła): appendchild(node newchild) - dodaje dziecko newchild do listy dzieci, replacechild(node newchild, Node oldchild) - zamienia węzeł dziecka oldchild węzłem newchild, removechild(node oldchild) - usuwa węzeł dziecka oldchild, insertbefore(node newchild, Node refchild) - wstawia węzeł newchild przed węzłem refchild, getparentnode() - zwraca rodzica daneg węzła, getfirstchild(), getlastchild() - zwraca pierwsze/ostatnie dziecko. getprevioussibling() - zwraca węzeł bezpośrednio poprzedzający dany węzeł, getnextsibling() - zwraca węzeł występujący zaraz po bierzącym węźle.
13 XML i Java 13/57 Model DOM - Node, typy węzła Wybrane stałe określające typ węzła (static short): ATTRIBUTE NODE (2) - Węzeł jest atrybutem. CDATA SECTION NODE (4) - Węzeł jest sekcją CDATA. COMMENT NODE (8) - Węzeł jest komentarzem. DOCUMENT NODE (9) - Węzeł jest całym dokumentem XML (klasa Document). ELEMENT NODE (1) - Wezeł jest elementem. ENTITY NODE (6) - Węzeł jest encją. NOTATION NODE (12) - Węzeł jest notacją. PROCESSING INSTRUCTION NODE (7) - Węzeł jest instrukcją przetwarzania. TEXT NODE (3) - Węzel tekstowy.
14 XML i Java 14/57 Model DOM - Element Interfejs org.w3c.dom.element dziedziczy po interfejsie Node. Najważniejsze unikalne metody: getattribute(string name) - zwraca wartość atrybutu o nazwie name, getattributenode(string name) - zwraca węzeł atrybutu o nazwie name, setattributenode(attr newattr) - dodaje węzeł atrybutu newattr, setattribute(string name, String value) - dodaje atrubyt o nazwie name i wartości value, removeattribute(string name) - usuwa atrybut o nazwie name, removeattributenode(attr oldattr) - usuwa atrybut oldattr, hasattribute(string name) - zwraca prawdę jeśli w elemencie występuje atrybut o nazwie name.
15 XML i Java 15/57 Model DOM - Attr Interfejs org.w3c.dom.attr, najważniejsze metody: getname() - zwraca nazwę atrybutu, getvalue() - zwraca wartość atrybutu, setvalue(string value) - ustala zawartość atrybutu na value, getownerelement() - zwraca element, do którego należy dany atrybut.
16 XML i Java 16/57 Model DOM - NodeList Interfejs org.w3c.dom.nodelist zawiera tylko dwie metody: getlength() - zwraca liczbę wezłów zawartych w liście, item(int index) - zwraca węzeł znajdujący się na pozycji index listy. Interfejs org.w3c.dom.namednodemap, najważniejsze metody: getlength() - liczba węzłow w danej kolekcji, item(int index) - zwraca węzeł znajdujący się na pozycji index, getnameditem(string name) - zwraca węzeł o nazwie name, removenameditem(string name) - usuwa węzeł o nazwie name,
17 XML i Java 17/57 Klasy i intefrejsy modelu DOM Pakiet javax.xml.parsers udostępnia klasy pozwalające na przetwarzanie dokumentów XML. Klasy: DocumentBuilder - pozwala na otrzymanie dokumentu DOM (klasa Document) na podstawie dokumentu XML, DocumentBuilderFactory - klasa pozwala otrzymać parser (klasa DocumentBuilder), który tworzy DOM z dokumentu XML.
18 XML i Java 18/57 Model DOM - tworzenie dokumentu XML Document doc = docbuilder.newdocument(); Element korzen = doc.createelement("korzen drzewa"); doc.appendchild(korzen); Element osoba = doc.createelement("osoba"); Attr attr = doc.createattribute("atrybut"); attr.setvalue("wartość"); osoba.setattributenode(attr); osoba.setattribute("wiek", "31"); korzen.appendchild(osoba); Element nazwisko = doc.createelement("nazwisko"); nazwisko.appendchild(doc.createtextnode("kowalski")); osoba.appendchild(nazwisko); Element imie = doc.createelement("imie"); imie.appendchild(doc.createtextnode("januszek")); osoba.appendchild(imie);
19 XML i Java 19/57 Tworzenie drzewa dokumentu - wynik <?xml version="1.0" encoding="utf-8"?> <korzen drzewa> <osoba atrybut="wartość" wiek="31"> <nazwisko>kowalski</nazwisko> <imie>januszek</imie> </osoba> </korzen drzewa>
20 XML i Java 20/57 Model DOM - drzewo dokumentu z pliku XML Zamiast tworzyć dokument samodzielnie można go stworzyć wczytując/parsując plik XML. Wystarczy klasa File i DocumentBuilder. File fxmlfile = new File("xml/note.xml"); DocumentBuilderFactory docfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder = docfactory.newdocumentbuilder(); // tworzenie pustego dokumentu // Document doc = docbuilder.newdocument(); // tworzenie dokumentu z pliku XML Document doc = docbuilder.parse(fxmlfile);...
21 XML i Java 21/57 Przekształcanie drzewa DOM do pliku Pakiet javax.xml.transform udostępnia API pozwalające przekształcić Dokument z modelu DOM do strumienia wyjściowego. Strumieniem wyjściowym może być plik lub ekran (System.out). Klasy: Transformer - pozwala na przekształcenie źródła dokumentu z modelu DOM do strumienia wyjściowego. TransformerFactory - klasa pozwala otrzymać obiekt klasy Transformer.
22 XML i Java 22/57 Zapis dokumentu XML - Transformer try { DocumentBuilderFactory docfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder = docfactory.newdocumentbuilder(); Document doc = docbuilder.newdocument();... TransformerFactory transformerfactory = TransformerFactory.newInstance(); Transformer transformer = transformerfactory.newtransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File("zapisany.xml")); transformer.transform(source, result); catch (ParserConfigurationException pce) { pce.printstacktrace(); catch (TransformerException te) { te.printstacktrace();
23 XML i Java 23/57 Tworzenie drzewa dokumentu - przykład try { DocumentBuilderFactory docfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder = docfactory.newdocumentbuilder(); Document doc = docbuilder.newdocument(); Element korzen = doc.createelement("korzen_drzewa"); doc.appendchild(korzen); Element osoba = doc.createelement("osoba"); korzen.appendchild(osoba); Element nazwisko = doc.createelement("nazwisko"); nazwisko.appendchild(doc.createtextnode("kowalski")); osoba.appendchild(nazwisko); Element imie = doc.createelement("imie"); imie.appendchild(doc.createtextnode("januszek")); osoba.appendchild(imie); TransformerFactory transformerfactory = TransformerFactory.newInstance(); Transformer transformer = transformerfactory.newtransformer(); DOMSource source = new DOMSource(doc); // wypisanie dokumentu XML na ekran StreamResult result = new StreamResult(System.out); transformer.transform(source, result); catch (ParserConfigurationException pce) { pce.printstacktrace(); catch (TransformerException te) { te.printstacktrace();
24 XML i Java 24/57 Tworzenie drzewa dokumentu - przykład try { DocumentBuilderFactory docfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder = docfactory.newdocumentbuilder(); Document doc = docbuilder.newdocument(); Element korzen = doc.createelement("korzen_drzewa"); doc.appendchild(korzen); Element osoba = doc.createelement("osoba"); korzen.appendchild(osoba); Element nazwisko = doc.createelement("nazwisko"); nazwisko.appendchild(doc.createtextnode("kowalski")); osoba.appendchild(nazwisko); Element imie = doc.createelement("imie"); imie.appendchild(doc.createtextnode("januszek")); osoba.appendchild(imie); TransformerFactory transformerfactory = TransformerFactory.newInstance(); Transformer transformer = transformerfactory.newtransformer(); DOMSource source = new DOMSource(doc); // zapisanie dokumentu XML do pliku StreamResult result = new StreamResult(new File("zapisany.xml")); transformer.transform(source, result); catch (ParserConfigurationException pce) { pce.printstacktrace(); catch (TransformerException te) { te.printstacktrace();
25 XPath i XQuery w języku Java XML i Java 25/57
26 XML i Java 26/57 XPath w języku Java Pakiet javax.xml.xpath. Obsługa xpath jest domyślnie w bibliotekach Javy, inaczej niż XQuery. Interfejsy/Klasy: XPath - interfejs udostępnia dostęp do wyrażeń XPath, XPathFactory - klasa pozwala na stworzenie instancji obiektu XPath, XPathExpressionException - klasa do obsługi błędów w wyrażeniu XPath, XPathConstants - klasa zawiera pola statyczne określające typ zwracanej wartości przez metode evaluate interfejsu XPath. org.xml.sax.inputsource - klasa opakowująca dane wejściowe, np. plik XML w obiekt.
27 XML i Java 27/57 XPath Interfejs javax.xml.xpath.xpath, najważniejsze metody: evaluate(string expression, InputSource source) - przetwarza wyrażenie expression w obszarze określonym przez source, wartość zwracana jako String, evaluate(string expression, InputSource source, QName returntype) - jak wyżej tylko returntype określa typ zwracanej wartości - typy XPathConstants, compile(string expression) - kompiluje wyrażenie XPath do późniejszego użycia, zwraca XPathExpression, reset() - resetuje XPath do stanu jaki miał on zaraz po utworzeniu XPathFactory.newXPath().
28 XML i Java 28/57 Typy XPathConstants Pola klasy XPathConstants (według specyfikacji XPath 1.0): BOLEAN - typ loginczy, DOM OBJECT MODEL - URI dla modelu obiektowego DOM, NODE - typ danych odpowiadający węzłowi, NODESET - typ danych odpowiadający zbiorowi węzłów, NUMBER - wartości liczbowa, STRING - napis, typ string.
29 XML i Java 29/57 XPath w języku Java - nazwa przedszkola // utworzenie obiektu xpath XPath xpath = XPathFactory.newInstance().newXPath(); String expression = "/przedszkole/nazwa"; InputSource inputsource = new InputSource("xml/przedszkole.xml"); try { NodeList nodes = (NodeList) xpath.evaluate( expression, inputsource, XPathConstants.NODESET ); // lista węzłów bo NODESET... Node n = nodes.item(0); // wartości węzła są zawsze w węzłach tekstowych jako dzieci elementu System.out.println( n.getnodename() + " - " + n.getfirstchild().getnodevalue() ); catch (XPathExpressionException e) { e.printstacktrace();
30 XML i Java 30/57 XPath w języku Java - imiona dzieci z grupy drugiej XPath xpath = XPathFactory.newInstance().newXPath(); String expression = "//grupa[@id=2]"; InputSource inputsource = new InputSource("xml/przedszkole.xml"); try { Node grupa = (Node) xpath.evaluate(expression, inputsource, XPathConstants.NODE); System.out.println(grupa.getNodeName()); XPath xpath2 = XPathFactory.newInstance().newXPath(); String expression2 = "dziecko/osoba/imie"; // wyrażnie wybiera dane z wyników pierwrzego wyrażenia - grupa NodeList imiona = (NodeList) xpath2.evaluate( expression2, grupa, XPathConstants.NODESET); for(int i=0; i<imiona.getlength(); ++i) { Node n = imiona.item(i); System.out.println( n.getnodename() + " - " + n.getfirstchild().getnodevalue()); catch (XPathExpressionException e) { e.printstacktrace();
31 XML i Java 31/57 XQuery w języku Java Podstawowe API Javy nie zawiera obsługi XQuery. Aby wykorzystać XQuery w języku Java należy wykorzystać dodatkowy pakiet. Biblioteka Saxonica ( Dokumentacja: Dwa pakiety ( saxon9he.jar - Saxon Home Edition dla Javy saxon9-xqj.jar - XQJ (ang. XQuery API for Java)
32 XML i Java 32/57 XQuery w języku Java Pakiet javax.xml.xquery Interfejs: XQDataSource - pozwala na tworzenie połączenia XQConnection. XQConnection - pozwala na uzyskanie połączenia z odpowiednim mechanizmem XQuery. Połączenie jest uzyskiwane przez objekt XQDataSource. XQExpression - towrzy obiekt wyrażeń z języka XQuery. Metoda executequery() pozwala na wykonanie zapytania. XQSequence - interfejs obsługujący sekwencje pozycji opisanych zgodnie z XDM (ang. XQuery and XPath Data Model) XQDataSource ds = new SaxonXQDataSource(); XQConnection conn = ds.getconnection(); XQExpression exp = conn.createexpression(); XQSequence seq = exp.executequery( "for $i in doc( xml/przedszkole.xml )//nazwa return $i" ); com.saxonica.xqj.saxonxqdatasource - Implementacja XQJ XQDataSource biblioteki Saxon.
33 XML i Java 33/57 XQuery - przykład Dokumentacja Java API: try { XQDataSource ds = new SaxonXQDataSource(); XQConnection conn = ds.getconnection(); XQExpression exp = conn.createexpression(); XQSequence seq = exp.executequery( "for $i in doc( xml/przedszkole.xml )//nazwa return $i"); while (seq.next()) { System.out.println(seq.getSequenceAsString(null)); catch (XQException e) { e.printstacktrace();
34 SAX - Simple API for XML w języku Java XML i Java 34/57
35 SAX - podstawowe API SAX nie działa tak jak DOM. Nie wczytuje dokumentu do pamięci jak również nie tworzy reprezentacji obiektowej dokumentu XML. Zamiast tego SAX wywołuje odpowiednie funkcje w odpowiedzi na napotkane zdarzenia. Pakiet org.xml.sax Pakiet org.xml.sax.helpers DefaultHandler - domyślna klasa bazowa do obsługi zdarzeń SAX2. W obiekcie tej klasy należy dodać funkcje obsługujące zdarzenia, początku elementu, końca elementu, itp. Pakiet javax.xml.parsers - udostępnia klasy pozwalające przetwarzać dokumenty XML. Klasy: SAXParser - parser SAX dla XML opakowujący/zawierający interfejs XMLReader. SAXParserFactory - klasa pozwala na otrzymanie parsera SAX (klasa SAXParser), który pozwala na parsowanie dokumentów XML. XML i Java 35/57
36 SAX - DefaultHandler Wybrane medody klasy org.xml.sax.helpers.defaulthandler. Programista musi przeładować poniższe metody aby obsłużyć zdarzenia wywoływane podczas parsowania dokumentu XML. startdocument() - obsługuje zdarzenie napotkania przez parser początku dokumentu. enddocument() - obsługuje zdarzenie napotkania przez parser końca dokumentu. startelement(string uri, String localname, String qname, Attributes attributes) - obsługuje zdarzenie napotkania początku elementu (qname określa nazwę elementu, attributes lista atrybutów dostępnych przez interfejs Attributes). endelement(string uri, String localname, String qname) - obsługuje zdarzenie końca elementu (qname określa nazwę elementu). characters(char[] ch, int start, int length) - odbiera informacje o danych znakowych wewnątrz elementu. Wszystkie powyższe metody w przypadku błędów wyrzucają SAXException. XML i Java 36/57
37 XML i Java 37/57 SAX - DefaultHandler - przykład DefaultHandler handler = new DefaultHandler() { public void characters(char[] ch,int start,int length) throws SAXException { System.out.println("Dane znakowe: " + new String(ch, start, length)); ; public void startelement(string uri, String localname,string qname, Attributes attributes) throws SAXException { System.out.println("Początek elementu :" + qname); public void endelement(string uri, String localname, String qname) throws SAXException { System.out.println("Koniec elementu :" + qname); public void startdocument() throws SAXException { System.out.println("Początek DOKUMENTU"); public void enddocument() throws SAXException { System.out.println("Koniec DOKUMENTU");
38 XML i Java 38/57 Interfejs Attributes Interfejs Attributes pozwala na dostęp do listy atrybutów na trzy sposoby: przez indeks atrybutu, przez nazwę atrybutu z podaniem URI przestrzeni nazw, przez nazwę atrybutu razem z prefiksem (nawa kwalifikowana - qname). Metody intefrejsu Attributes: getindex(string qname) - zwraca indeks atrybutu o podanej nazwie kwalifikowanej (razem z prefiksem), getindex(string uri, String localname) - zwraca indeks atrybutu o podanej nazwie w przestrzeni nazw określonej podanym URI.
39 XML i Java 39/57 Interfejs Attributes Wybrane metody intefrejsu Attributes: getlength() - zwraca liczbę atrybutów w liście, getlocalname(int index) - zwraca nazwę atrybutu i podanym indeksie, getqname(int index) - zwraca pełną, kwalifikowaną nazwę atrybutu, geturi(int index) - zwraca URI prestrzeni nazw atrybutu o podanym indeksie, getvalue(int index) - zwraca wartość atrybutu o podanym indeksie, getvalue(string qname) - zwraca wartość atrybutu o podanej nazwie, gettype(int index) - zwraca typ atrybutu o podanym indeksie, gettype(string qname) - zwraca typ atrybutu o podanej nazwie.
40 XML i Java 40/57 Typy atrybutów interfejsu Attributes Typy atrybutów zwracane przez metodę gettype() intefrejsu Attributes: CDATA, ID, IDREF, IDREFS, NMTOKEN, NMTOKENS, ENTITY, ENTITIES, NOTATION.
41 XML i Java 41/57 Interfejs Attributes - przykład Wyświetlenie na ekranie nazwy i wartości wszystkich atrybutów parsowanego elementu. // metoda z klasy DefaultHandler wykonywania przy napodkaniu nowego elementu public void startelement( String uri, String localname,string qname, Attributes attributes) throws SAXException { for(int i=0; i < attributes.getlength(); i++) { System.out.print( attributes.getlocalname(i) + attributes.getvalue(i) );
42 XML i Java 42/57 SAX - SAXParser, SAXParserFactory Klasa SAXParserFactory, metody: newinstance() - metoda statyczna, tworzy nową instancję obiektu SAXParserFactory, newsaxparser() - tworzy nową instancję parsera SAXParser. Klasa SAXParser, metody: parse(file f, DefaultHandler dh) - przetwarza zawartość pliku XML używając od obsługi obiektu klasy DefaultHandler. try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxparser = factory.newsaxparser(); DefaultHandler handler = new DefaultHandler() {... ; saxparser.parse("dokument.xml", handler); catch (Exception e) { e.printstacktrace();
43 Zapis dokumentu XML Interfejs javax.xml.stream.xmlstreamwriter, najważniejsze medoty: writestartdocument() - zapisuje deklarację XML, writeenddocument() - zamyka otwarte znaczniki i zapisuje je w pliku, writestartelement(string localname) - zapisuje początkowy znacznik o nazwie localname, writeendelement() - zapisuje odpowiedni znacznik końcowy bazując na stanie XMLStreamWriter, writecharacters(string text) - zapisuje zawartość tekstową (text), writeattribute(string localname, String value) - zapisuje atrybut o nazwie localname i wartości value, writecomment(string data) - zapisuje do strumienia komentarz o wartości data. Plik tekstowy jest przetwarzany na strumień za pomocą FileOutputStream. Uzyskujemy obiekt OutputStream. Na bazie tego tworzymy OutputStreamWriter, który służy do stworzenia interfejsu XMLStreamWriter. XML i Java 43/57
44 XML i Java 44/57 Zapis dokumentu XML - XMLStreamWriter Przykład tworzenia dokumentu XML za pomocą klasy XMLStreamWriter. OutputStream outputstream = new FileOutputStream(new File("doc.xml")); XMLStreamWriter out = XMLOutputFactory.newInstance().createXMLStreamWriter( new OutputStreamWriter(outputStream, "utf-8")); out.writestartdocument(); // tworzy nagłówek XML out.writestartelement("doc"); // znacznik otwierający doc out.writestartelement("title"); out.writecharacters("document Title"); out.writeendelement(); out.writeendelement(); out.writeenddocument(); // znacznik zamykający doc, konieczny jeśli... out.close();
45 Serializacja do XML w języku Java XML i Java 45/57
46 XML i Java 46/57 Serializacja w języku Java W procesie serializacji używane są strumienie z języka Java. Znaczna część klas będących strumieniami udostępnia tylko zapis/odczyt obiektów podstawowych (liczby, stringi, tablice). Java zawiera udogodnienie pozwalające na strumieniowanie dowolnych obiektów. Przekształcenie takiego strumienia na postać binarną lub znakową (np. XML) to serializacja. Odczytanie zapisanych w formie binarnej czy tekstowej obiektów to deserializacja. Ważne jest aby proces serializacji był odwracalny.
47 XML i Java 47/57 Po co jest serializacja? Potrzeba utrwalenia danych w aplikacjach. Możliwe przyczyny: konieczność zachowania danych w pamięci między uruchomieniami aplikacji, brak miejsca w pamięci na wszystkie dane aplikacji jednocześnie - potrzeba zapisania części z nich, zabezpieczenie przed utratą danych. Jeśli nie ma konieczności przeszukiwania składowanych informacji można zamiast baz danych wybrać właśnie serializację. W przypadku serializacji to użytkownik decyduje o miejscu przechowywania plików z danymi na dysku. Serializacja zapewnia pewną trwałość danych przetwarzanych w aplikacjach.
48 XML i Java 48/57 Gdzie używa się serializacji? Gdzie używa się serializacji? Jeśli mamy rozproszone aplikacje obiektowe to najłatwiej przesyłać przez sieć całe obiekty. Na gniazdach sieciowych można strumieniami przesyłać całe obiekty. Serializacja z użyciem obiektów jest też używana do przekazywania parametrów i wartości zwracanych przy zdalnym wywoływaniu metod. Serializacja leży u podstaw Java RMI wykorzystywanego w wielu technologiach.
49 XML i Java 49/57 Serializacja do obiektów binarnych Serializacja na postać binarną wykorzystuje klasy: ObjectOutputStream (metoda writeobject(object) ), ObjectInputStream (metoda readobject() ), Obiekt podlegający serializacji musi implementować interfejs java.io.serializable. Jest to interfejs bez metod. Pełni tylko funkcję znacznika. Serializowany jest obiekt przekazany w metodzie writeobject i wszystkie zawarte w nim obiekty. Serializacji poddawany jest cały graf obiektów. Wszystkie obiekty podlegające serializacji powinny implementować interfejs java.io.serializable.
50 XML i Java 50/57 Serializacja do postaci binarnej - przykład SerBin.java import java.io.*; class Książka implements Serializable { String tytuł; int rokwydania; Autor autor; Książka(String tytuł, int rokwydania, Autor autor) { this.tytuł = tytuł; this.rokwydania = rokwydania; this.autor = autor; System.out.println("wywołanie konstruktora klasy Książka"); public String tostring() { String adrpamięć = super.tostring(); return adrpamięć+"(" + tytuł + ", " + rokwydania + ", " + autor + ")";
51 XML i Java 51/57 Serializacja do postaci binarnej - przykład SerBin.java class Autor implements Serializable { String nazwisko; String imię; Autor(String nazwisko, String imię) { this.nazwisko = nazwisko; this.imię = imię; System.out.println("wywołanie konstruktora klasy Autor"); public String tostring() { String adrpamięć = super.tostring(); return adrpamięć + "(" + nazwisko + ", " + imię + ")";
52 XML i Java 52/57 Serializacja do postaci binarnej - przykład SerBin.java public class SerBin { public static void main(string[] args) throws Exception { Autor sienkiewicz = new Autor("Sienkiewicz", "Henryk"); Książka pust = new Książka("W pustyni i w puszczy", 1911, sienkiewicz); System.out.println(pust); ObjectOutputStream out = new ObjectOutputStream( new BufferedOutputStream( new FileOutputStream("ksiazka.bin"))); out.writeobject("książka"); out.writeobject(pust); out.close(); ObjectInputStream in = new ObjectInputStream( new BufferedInputStream( new FileInputStream("ksiazka.bin"))); String nagłówek = (String) in.readobject(); System.out.println(nagłówek); Książka puszcz = (Książka) in.readobject(); in.close(); System.out.println(puszcz);
53 XML i Java 53/57 Serializacja do obiektów binarnych Jeśli w obiekcie będzie kilka referencji do tego samego obiektu to po deserializacji odpowiednie referencje będą zachowane (np. dwie osoby mające ten sam adres). Przy deserializacji, mimo powstawania nowych obiektów, nie są wywoływane konstruktory. Domyślnie serializowane są wszystkie niestatyczne składowe przekazanego obiektu. Nie zawsze jest to działanie pożądane. Niektórch danych (np. dane poufne) czy obiektów (np. strumienie czy wątki) nie powinno się serializować. Nie wszystkie obiekty implementują interfejs java.io.serializable - nie wszystko da się serializować. Rozwiązaniem jest: rezygnacja z domyślnego mechanizmu serializacji (trzeba wtedy samemu napisać kod odpowiedzialny za serializację) wskazanie atrybutów, które nie podlegają serializacji (transient). Atrybuty wyłączone z serializacji oznaczamy modyfikatorem transient.
54 XML i Java 54/57 Serializacja do XML Klasy ObjectOutputStream i ObjectInputStream - serializacja binarna między aplikacjami w języku Java. Do wymiany danych między różnymi językami programowania stosuje się język XML, a od jakiegoś czasu również JSON. Serializacja do XML jest tak samo łatwa jak serializacja do postaci binarnej. Zamiast klas ObjectOutputStream i ObjectInputStream używa się klas XMLDecoder i XMLEncoder (pakiet java.beans). Serializacja do XML nie wymaga interfejsu java.io.serializable ale zgodności z Java Beans czyli: klasy muszą posiadać bezparametrowy publiczny konstruktor, muszą posiadać metody set i get dla każdego atrybutu.
55 XML i Java 55/57 Serializacja do XML - przykład Autor.java public class Autor { String nazwisko; String imię; Autor(String nazwisko, String imię) { this.nazwisko = nazwisko; this.imię = imię; System.out.println("wywołanie konstruktora klasy Autor"); public String tostring() { String adrpamięć = super.tostring(); return adrpamięć + "(" + nazwisko + ", " + imię + ")"; public String getnazwisko() { return nazwisko; public String getimię() { return imię; public void setnazwisko(string nazwisko) { this.nazwisko = nazwisko; public void setimię(string imię) { this.imię = imię; public Autor() { System.out.println("wywołanie bezparametrowego konstruktora klasy Autor");
56 XML i Java 56/57 Serializacja do XML - przykład Książka.java public class Książka { String tytuł; int rokwydania; Autor autor; Książka(String tytuł, int rokwydania, Autor autor) { this.tytuł = tytuł; this.rokwydania = rokwydania; this.autor = autor; System.out.println("wywołanie konstruktora klasy Książka"); public String tostring() { String adrpamięć = super.tostring(); return adrpamięć+"(" + tytuł + ", " + rokwydania + ", " + autor + ")"; public Autor getautor() { return autor; public String gettytuł() { return tytuł; public int getrokwydania() { return rokwydania; public void setautor(autor autor) { this.autor = autor; public void settytuł(string tytuł) { this.tytuł = tytuł; public void setrokwydania(int rokwydania) { this.rokwydania = rokwydania; public Książka() { System.out.println("wywołanie bezparametrowego konstruktora klasy Książka");
57 XML i Java 57/57 Serializacja do XML - przykład SerXML.java import java.beans.*; import java.io.*; public class SerXML { public static void main(string[] args) throws IOException { Autor sienkiewicz = new Autor("Sienkiewicz", "Henryk"); Książka pust = new Książka("W pustyni i w puszczy", 1911, sienkiewicz); Książka quovadis = new Książka("Quo vadis", 1896, sienkiewicz); XMLEncoder e = new XMLEncoder( new BufferedOutputStream( new FileOutputStream("ksiazka.xml"))); System.out.println(pust); System.out.println(quoVadis); e.writeobject(pust); e.writeobject(quovadis); e.close(); XMLDecoder d = new XMLDecoder( new BufferedInputStream( new FileInputStream("ksiazka.xml"))); pust = (Książka) d.readobject(); quovadis = (Książka) d.readobject(); System.out.println(pust); System.out.println(quoVadis);
Programowanie obiektowe
Programowanie obiektowe Wykład 11: Serializacja obiektów 5/19/2013 S.Deniziak:Programowanie obiektowe 1 Problem składowania/przesyłania danych Strumienie Tylko typy proste Konieczność ręcznego odtwarzania
Bardziej szczegółowoWykorzystywanie 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ółowoProgramowanie obiektowe
Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 9 Serializacja Przygotował: Jacek Sroka 2 Przypomnienie Abstrakcja strumienia hierarchia binarna InputStream/OutputStream hierarchia znakowa Reader/Writer
Bardziej szczegółowoJAVA 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ółowoProcesowanie 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ółowoPodstawy 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ółowoStrumienie i serializacja
Strumienie i serializacja Prezentacja dostępna na Syriuszu: http://sirius.cs.put.poznan.pl/~inf80156 Klasy: InputStream, OutputStream, Reader i Writer W Javie hierarchia strumieni oparta jest o cztery
Bardziej szczegółowoSAX 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ółowoZaawansowane 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ółowoPlan 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ółowoXML 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ółowoSTRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW
STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW 1. Procedura korzystania ze strumieni danych Aby utworzyć plik: 1) Należy utworzyć obiekt (np. typu FileOutputStream), powiązany ze plikiem danych binarnych (np.
Bardziej szczegółowoXML 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ółowoXML 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ółowoProgramowane refleksyjne i serializacja
1 Programowane refleksyjne i serializacja 1. Programowanie refleksyjne: przegląd wybranych klas z pakietu java.lang i java.lang.reflect, dynamiczne obiekty proxy. 2. Serializacja interfejs Serializable,
Bardziej szczegółowoKotwasiński Obsługa XMLa z poziomu Javy
Obsługa XMLa z poziomu Javy Adam 5 kwietnia 2009 Co możemy zrobić odczyt zawartości dokumentów XML modyfikacja i zapis dokumentów walidacja dokumentu podczas parsowania przed zapisaniem wzdględem DTD,
Bardziej szczegółowoPerl 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ółowoJava niezbędnik programisty spotkanie nr 11. Importy statyczne, wejście/wyjście, wyrażenia regularne, serializacja
Java niezbędnik programisty spotkanie nr 11 Importy statyczne, wejście/wyjście, wyrażenia regularne, serializacja 1 Importowanie składowych statycznych Opracował Import static java.lang.system.out; //import
Bardziej szczegółowoPodstawy otwartych języków programowania Wyjątki i strumienie I/O
Podstawy otwartych języków programowania Wyjątki i strumienie I/O Wiktor Wandachowicz Wyjątki Podstawą filozofii Javy jest założenie, że: źle sformułowany kod nie zostanie wykonany Wyjątki są mechanizmem
Bardziej szczegółowoWykład 6 Dziedziczenie cd., pliki
Wykład 6 Dziedziczenie cd., pliki Autor: Zofia Kruczkiewicz 1. Dziedziczenie cd. 2. Pliki - serializacja Zagadnienia 1. Dziedziczenie aplikacja Kalkultory_2 typu Windows Forms prezentująca dziedziczenie
Bardziej szczegółowoJava Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.
Wstęp Java Zadanie Celem laboratorium jest zapoznanie się z podstawami platformy oraz języka Java. W ramach zadania należy przygotować aplikację zarządzania notatkami użytkownika obsługiwaną z konsoli.
Bardziej szczegółowoProgramowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusz Mikoda
Programowanie urządzeń mobilnych dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusz Mikoda Extensible Markup Language XML Extensible Markup Language (Rozszerzalny Język Znaczników), Uniwersalny
Bardziej szczegółowoProgramowanie 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....................................................................................
Bardziej szczegółowoWywoł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ółowoInstrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania
Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Opis biznesowy świata rzeczywistego Wymagania funkcjonalne i niefunkcjonalne aplikacji Diagram przypadków życia Diagramy klas i sekwencji:
Bardziej szczegółowoPrzetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 06
Plan Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 06 T. Romańczukiewicz Jagiellonian University 2009/2010 Plan Plan 1 SAX 2 Podsumowanie Plan SAX Podsumowanie Przypomnienie Wstęp Obsługa
Bardziej szczegółowoJava: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń
Bardziej szczegółowoXML in own applications
XML in own applications Patryk Czarnik Institute of Informatics University of Warsaw XML and Modern Techniques of Content Management 2010/11 Introduction XML in own applications Models Generyczne drzewo
Bardziej szczegółowoRemote 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
Bardziej szczegółowoPodejś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
Bardziej szczegółowoDokumentacja 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
Bardziej szczegółowoObiektowe 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ółowoSystemy operacyjne na platformach mobilnych
Systemy operacyjne na platformach mobilnych Wykład 4 Grzegorz Jabłoński, Piotr Perek Katedra Mikroelektroniki i Technik Informatycznych Zagadnienia wykładu Menadżer połączeń Usługi HTTP Klient HTTP Żądanie
Bardziej szczegółowoSAX2 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
Bardziej szczegółowoJava. Programowanie Obiektowe Mateusz Cicheński
Java Programowanie Obiektowe Mateusz Cicheński Wielowątkowość Proces a wątek? Thread vs Runnable sleep(), interrupt(), join() Problemy wielowątkowości Obiekty niemodyfikowalne (immutable) Serializacja
Bardziej szczegółowoRemote 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
Bardziej szczegółowoDrzewa DOM. Maciej Zakrzewicz. mzakrz@cs.put.poznan.pl http://www.cs.put.poznan.pl/~mzakrz/
Drzewa DOM Maciej Zakrzewicz mzakrz@cs.put.poznan.pl http://www.cs.put.poznan.pl/~mzakrz/ Document Object Model (DOM) Document Object Model jest standardem modelowania dokumentów XML przy użyciu struktury
Bardziej szczegółowoModele 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ółowoWywoł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ółowoakademia 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ółowoAplikacje 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
Bardziej szczegółowoPodejś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ółowoJava 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ółowoPlatformy Programistyczne Zagadnienia sieciowe i wątki
Platformy Programistyczne Zagadnienia sieciowe i wątki Agata Migalska 27/28 maja 2014 Komunikacja sieciowa 1 Komunikacja sieciowa 2 Wiele wątków 3 Serializacja Architektura typu klient-serwer Architektura
Bardziej szczegółowoWykł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ółowoPodstawy 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
Bardziej szczegółowoKatalog 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ółowoStrumienie, pliki. Sortowanie. Wyjątki.
Strumienie, pliki. Sortowanie. Wyjątki. Serializacja Zapisuje całą klasę Plik binarny Delimiter nieokreślony Nie da się podglądać Pliki tekstowe Zapisuje wybrane informacje Plik tekstowy Delimiter ustawiamy
Bardziej szczegółowo1 Atrybuty i metody klasowe
1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich
Bardziej szczegółowoProgramowanie 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ółowoJava 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ółowoProgramowanie 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
Bardziej szczegółowoWielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.
Wielowątkowość Programowanie w środowisku rozproszonym. Wykład 1. Informacje organizacyjne Wymiar godzin: W-30, LAB-15 Zaliczenie wykonanie kilku programów i ich zaliczenie (w trakcie zajęć laboratoryjnych)
Bardziej szczegółowoProgramowanie 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ółowoMetody dostępu do danych
Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie materiałów dra inż. Juliusza Mikody Jak działa JDO Podstawowym zadaniem JDO jest umożliwienie aplikacjom Javy transparentnego umieszczenia
Bardziej szczegółowoInterfejsy. 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ółowoObszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Bardziej szczegółowoKurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML
Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML Wyrażenia regularne c:\> dir *.exe $ rm *.tmp Wyrażenia regularne 'alamakota' '(hop!)*' { '',
Bardziej szczegółowoPodstawy obiektowości
Podstawy obiektowości Zad. Zamówienie 1. Napisać program do obsługi zamówień. Program powinien składać się z dwóch klas: Zamowienie oraz Pozycja, przy czym każde zamówienie zawierać może jedną lub więcej
Bardziej szczegółowoRemote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1
P d jś i bi kt d b d t ó Podejście obiektowe do budowy systemów rozproszonych Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java),wywiedziony idi z Remote obie kt aplikacja klie ncka interfe js serw
Bardziej szczegółowoJęzyk JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 6, część 2 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Wprowadzenie do operacji wejścia/wyjścia: strumienie 2. Podstawowe klasy strumieni i InputStream/OutputStream
Bardziej szczegółowoWSNHiD, Programowanie 2, Lab. 3. Trwałość danych
WSNHiD, Programowanie 2, Lab. 3 Trwałość danych Wyjątki Nietypowe sytuacje, które podczas normalnego wykonywania programu nie powinny się wydarzyć obsługiwane są w języku Java za pomocą wyjątków. Przyjrzyjmy
Bardziej szczegółowoProgramowanie 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ółowoJAVA 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
Bardziej szczegółowoJava. 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ółowoZad.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
Bardziej szczegółowoJAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt
JAVA Pliki - zapis i odczyt Opracował: Andrzej Nowak Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Strumienie wejścia i wyjścia Strumienie wejścia
Bardziej szczegółowoSposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.
Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby
Bardziej szczegółowoProgramowanie w języku Java. Bazy danych SQLite w Javie
Programowanie w języku Java Bazy danych SQLite w Javie Co to jest SQLite SQLite to bezserwerowa, nie wymagająca konfiguracji relacyjna baza danych. Znajduje szerokie zastosowanie np.. w systemie android
Bardziej szczegółowo1. CZYM JEST SERIALIZACJA
SERIALIZACJA O CZYM POWIEMY? 1. Czym jest serializacja? 2. Jak przeprowadzić proces serializacji? 3. Jak przeprowadzić proces deserializacji? 4. Serializacja własnych klas. 5. Dobre praktyki. 6. SoapFormatter.
Bardziej szczegółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoZdalne 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
Bardziej szczegółowoJava: 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
Bardziej szczegółowoTworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk
Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery Łukasz Bartczuk Moduł 6 JavaScript w przeglądarce Agenda Skrypty na stronie internetowej Model DOM AJAX Skrypty na stronie
Bardziej szczegółowoWyją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ółowoOprogramowanie 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ółowoProgramowanie obiektowe zastosowanie języka Java SE
Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z
Bardziej szczegółowoProgramowanie 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ółowolibxml2 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ółowoBezpieczne uruchamianie apletów wg
Bezpieczne uruchamianie apletów wg http://java.sun.com/docs/books/tutorial/security1.2/ Zabezpieczenia przed uruchamianiem apletów na pisanych przez nieznanych autorów 1) ograniczenie możliwości odczytywania,
Bardziej szczegółowoKurs 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ółowoAplikacje 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ółowoJę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ółowoJĘ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ółowoZaawansowany kurs języka Python
Wykład 5. 30 października 2013 Plan wykładu 1 2 3 4 yield from Zamiast Example for item in iterable: yield item: można pisać Example yield from iterable Plan wykładu 1 2 3 4 Przykłady wyrażeń regularnych
Bardziej szczegółowoJAVA I SIECI. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html
JAVA I SIECI ZAGADNIENIA: URL, Interfejs gniazd, transmisja SSL, protokół JNLP. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA,
Bardziej szczegółowoStrumieniowe bazy danych. Piotr i Paweł
Strumieniowe bazy danych Piotr i Paweł Źródła zapotrzebowania na DSMS Finanse (giełda, przewidywanie trendów, wykrywanie defraudacji, szacowanie ryzyka) Zarządzanie ruchem i wydajnością sieci telekomunikacyjnych
Bardziej szczegółowoProgramowanie w Internecie. Java
Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java
Bardziej szczegółowoProgramowanie 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)
Bardziej szczegółowoMultimedia 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ółowoObiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
Bardziej szczegółowoXML 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ółowoWykł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
Bardziej szczegółowoPrototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.
1/14 Prototype (prototyp) Cel: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp. Przykład: Edytor 3D klient tworzy obiekty różnych kształtów
Bardziej szczegółowoProgramowanie 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ółowoUML 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ółowoDefiniowanie własnych klas
Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:
Bardziej szczegółowoAplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt
Bardziej szczegółowoJęzyki i metody programowania Java. Wykład 2 (część 2)
Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego
Bardziej szczegółowoPODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne
Przykład 1 metody i atrybuty statyczne public class Napis1 { static String wynik; public static void Inicjuj() {wynik = ""; PODEJŚCIE OBIEKTOWE public static void Dopisz_do_wyniku(char ch) { wynik+="\nkod
Bardziej szczegółowo