Προγραμματισμός Εφαρμογών Διαδικτύου

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Πανεπιστήμιο Δυτικής Μακεδονίας Πανεπιστήμιο Δυτικής Μακεδονίας Παιδαγωγικό Τμήμα Νηπιαγωγών Τίτλος Μαθήματος Ενότητα # (bold): Τίτλος Ενότητας (normal)
Advertisements

Ποιότητα Λογισμικού Ενότητα 4: Παράδειγμα Ελέγχου. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
Ποιότητα Λογισμικού Ενότητα 3: Σουίτες Ελέγχων. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
Ποιότητα Λογισμικού Ενότητα 2: Παραμετρικοί έλεγχοι στο JUnit. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής.
Οδηγίες δημιουργίας προσβάσιμων εγγράφων με χρήση LaTex
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 13: Επαναληπτικό μάθημα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 8: Πίνακας Συμβόλων Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 10: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Α) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 11: Βελτιστοποίηση Ενδιάμεσου Κώδικα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 4: Συμβολοσειρές και Δομές Ελέγχου. Διδάσκων: Νικόλαος Θ Λιόλιος,
Δομές Δεδομένων και Αρχεία
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 6: Πίνακες και Παράμετροι στην main. Διδάσκων: Νικόλαος Θ Λιόλιος,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 2: Μεταβλητές και Τύποι Δεδομένων. Διδάσκων: Νικόλαος Θ Λιόλιος,
Προγραμματισμός ΗΥ Ενότητα 6: Δισδιάστατοι πίνακες.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 8: Κατασκευαστές. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
Αντικειμενοστραφής Προγραμματισμός Ι
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
Ανθρωπολογία του Θεάτρου Ενότητα 4 η : Βασικές αρχές της Τέχνης του Ηθοποιού Γιώργος Σαμπατακάκης, M.Phil. (Καίμπρητζ) – Ph.D. (Λονδίνο) Τμήμα Θεατρικών.
Τμήμα Τεχνολόγων Γεωπόνων Τίτλος Μαθήματος: ΚΑΛΛΩΠΙΣΤΙΚΑ ΔΕΝΤΡΑ ΚΑΙ ΘΑΜΝΟΙ Ενότητα 12: Οδηγίες δημιουργίας φυτολογίου Γρηγόριος Βάρρας Αν. Καθηγητής Άρτα,
ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ Ενότητα 12 : Η χρήση της MySQL στο Ηλεκτρονικό εμπόριο (ΙΙI) Ιωάννης Τσούλος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Ενότητα 7 : Χρήση Πινάκων στο Ηλεκτρονικό εμπόριο (I) Ιωάννης Τσούλος
Τεχνολογία και Προγραμματισμός Υπολογιστών
Αντικειμενοστραφής Προγραμματισμός Ι
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
Προγραμματισμός κινητών συσκευών
Ανάπτυξη Εκπαιδευτικού Λογισμικού
Ενότητα 5 : Δομές Δεδομένων και αφηρημένοι
Ενότητα # 1: ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΕΝΕΡΓΟΠΟΙΗΣΗ ΚΩΔΙΚΟΥ
Προγραμματισμός ΗΥ Ενότητα 11: Header Files. Διδάσκων: Ηλίας Κ Σάββας,
Ανάπτυξη Εκπαιδευτικού Λογισμικού
Τεχνολογία και Προγραμματισμός Υπολογιστών
Χρονικός Προγραμματισμός Έργων (Εργαστήριο)
ΕνΟτητα # 6: Ms Word IΙΙ CLAUDIA BOETTCHER ΤμΗμα ΙστορΙαΣ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(9)
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
ΦΡΟΝΤΙΣΤΗΡΙΟ: ΘΕΡΜΙΚΕΣ ΤΑΣΕΙΣ
ΕνΟτητα # 9: Ms Word VI CLAUDIA BOETTCHER ΤμΗμα ΙστορΙαΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Συστήματα Αυτομάτου Ελέγχου II
Ενότητα 4 : Τελεστές της γλώσσας PHP Ιωάννης Τσούλος
Αρχές Πληροφορικής Ενότητα # 10: Ιστολόγια. Η υπηρεσία Blogger
Ενότητα 2 : Το σύστημα βάσεων δεδομένων MySQL (II) Ιωάννης Τσούλος
ΜΗΧΑΝΙΚΗ ΤΩΝ ΥΛΙΚΩΝ ΦΡΟΝΤΙΣΤΗΡΙΟ: ΔΙΚΤΥΩΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Κανονικοποίηση ΤΙ ΕΙΝΑΙ ; Τεχνική Διαδικασία
Προγραμματισμός κινητών συσκευών
Ηλεκτρικές Μηχανές ΙΙ Ενότητα 5: Κανονικοποιημένες Καμπύλες
Προγραμματισμός κινητών συσκευών
Αρχές Πληροφορικής Ενότητα # 3: Το εσωτερικό του υπολογιστή
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(7)
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(4)
ΕνΟτητα # 8: Ms Word V CLAUDIA BOETTCHER ΤμΗμα ΙστορΙαΣ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(5)
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(10)
Προγραμματισμός Διαδικτύου
ΑΝΑΓΝΩΡΙΣΗ ΠΡΟΤΥΠΩΝ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Προγραμματισμός κινητών συσκευών
Προγραμματισμός κινητών συσκευών
Προγραμματισμός ΗΥ Ενότητα 12: Αρχεία Δομών. Διδάσκων: Ηλίας Κ Σάββας,
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Μεταγράφημα παρουσίασης:

Προγραμματισμός Εφαρμογών Διαδικτύου Προγραμματισμός Εφαρμογών Διαδικτύου Ενότητα 8: XML & PHP Φώτης Κόκκορας, Καθηγητής Εφαρμογών, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Προγραμματισμός Εφαρμογών Διαδικτύου Σκοποί ενότητας Να αναφέρει τις χρήσεις XML και PHP. Να περιγράφει τη διαδικασία ελέγχου λαθών κατά το φόρτωμα XML δεδομένων. Να χειρίζεται XML data files μέσω PHP5. Προγραμματισμός Εφαρμογών Διαδικτύου

Προγραμματισμός Εφαρμογών Διαδικτύου Περιεχόμενα ενότητας XML και PHP. Χειρισμός XML σε PHP5. Έλεγχος λαθών κατά το φόρτωμα XML. Δημιουργία XML output από PHP. Προγραμματισμός Εφαρμογών Διαδικτύου

Προγραμματισμός Εφαρμογών Διαδικτύου XML και PHP Η χρήση XML δεδομένων με PHP είναι εφικτή μέσω κατάλληλου parser. Οι απλούστερες λύσεις (π.χ. SimpleXML): παρέχουν πρόσβαση στα XML στοιχεία του εγγράφου μπορούν να ελέγξουν αν το έγγραφο είναι συντακτικά σωστό (well-formed) συνήθως δεν ελέγχουν αν η δομή είναι σωστή (βάσει κάποιου DTD ή XML Schema) συνήθως δεν υποστηρίζουν namespaces http://www.php.net/manual/en/book.simplexml.php Οι σύνθετες λύσεις (π.χ. μέσω του DOM API) είναι περισσότερο ολοκληρωμένες, επιτρέπουν πιο πολύπλοκους χειρισμούς και κατά βάση απαιτούν περισσότερο κώδικα. http://www.php.net/manual/en/book.dom.php Παραδοσιακά τα XML δεδομένα είναι σε κωδικοποίηση UTF-8. Ελέγξτε τη συμβατότητα των δεδομένων σας και της XML βιβλιοθήκης που θα χρησιμοποιήσετε. Πιθανώς να χρειαστούν μετατροπές (μέσω ειδικών συναρτήσεων).   Τα επόμενα βασίζονται στη βιβλιοθήκη SimpleXML που έρχεται ενεργοποιημένη by default στην έκδοση 5, της PHP. Παρέχει ένα απλό και εύκολο στη χρήση σύνολο συναρτήσεων για την μετατροπή ενός XML αρχείου σε ένα αντικείμενο που μπορούμε να επεξεργαστούμε με σχετικά απλές τεχνικές χειρισμού πινάκων (array iterators). Προγραμματισμός Εφαρμογών Διαδικτύου 6

Προγραμματισμός Εφαρμογών Διαδικτύου Χειρισμός XML σε PHP 5 (1) Έστω ένα αρχείο data.xml με το ακόλουθο XML περιεχόμενο: <?xml version="1.0" encoding="UTF-8"?> <news> <story category="horror" importance="urgent"> <headline lang="en" date="December 19, 2011">Godzilla Attacks LA!</headline> <headline lang="gr" date="December 19, 2011">Ο Γκοτζίλα επιτέθηκε στο LA!</headline> <description>Τhe monster attacked harbors along the California coast.</description> </story> <story> <headline date="December 14, 2011">Bigfoot Spotted at M.I.T. Dining Area.</headline> <description>The beast was seen in the dining area on Tuesday.</description> </news> Μπορούμε να διαβάσουμε XML δεδομένα από αρχείο (με ανάθεση σε αντικείμενο): <?php if (file_exists('data.xml')) { $xmlData = simplexml_load_file('data.xml'); print_r($xmlData); //τυπώνει πίνακα με μορφοποίηση } else { exit('Failed to open data.xml.'); } ?> Αν τα δεδομένα είναι ήδη σε μεταβλητή $str: simplexml_load_string($str) Προγραμματισμός Εφαρμογών Διαδικτύου 7

Προγραμματισμός Εφαρμογών Διαδικτύου Output Παραδείγματος SimpleXMLElement Object ( [story] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [category] => horror [importance] => urgent ) [headline] => Array ( Στην πραγματικότητα το output δεν είναι και τόσο τακτοποιημένο! SimpleXMLElement Object ( [story] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [category] => horror [importance] => urgent ) [headline] => Array ( [0] => Godzilla Attacks LA! [1] => Επίθεση του Γκοτζίλα στο LA! ) [description] => The monster attacked harbors along the California coast. ) [1] => SimpleXMLElement Object ( [headline] => Bigfoot Spotted at M.I.T. Dining Area. [description] => The beast was seen in the dining area on Tuesday. ) ) ) [0] => Godzilla Attacks LA! [1] => Επίθεση του Γκοτζίλα στο LA! ) [description] => Τhe monster attacked harbors along the California coast. ) [1] => SimpleXMLElement Object ( [headline] => Bigfoot Spotted at M.I.T. Dining Area. [description] => The beast was seen in the dining area on Tuesday. ) ) ) Προγραμματισμός Εφαρμογών Διαδικτύου 8

Έλεγχος Λαθών κατά το Φόρτωμα XML ...δηλαδή πριν από εντολές τύπου: $xmlData = simplexml_load_file('data.xml'); $xmlData = new SimpleXMLElement('test.xml',0,true); αναμένει αρχείο στην πρώτη παράμετρο όταν η τρίτη είναι true αναμένει string στην πρώτη παράμετρο όταν η τρίτη είναι false ...χρησιμοποιούμε την εντολή: libxml_use_internal_errors(true); Αν έχει αποτύχει η εντολή αρχικοποίησης της παραμέτρου $xmlData, ελέγχουμε τα σφάλματα που τυχόν συνέβησαν ως εξής: if (!$xmlData) { echo "Failed loading XML\n"; foreach(libxml_get_errors() as $error) { //λήψη μηνύματος echo "\t", $error->message; //εκτύπωση μηνύματος } Προγραμματισμός Εφαρμογών Διαδικτύου 9

Χειρισμός XML σε PHP 5 (2) (με βάση τα δεδομένα του data.xml) Εναλλακτική δημιουργία XML αντικειμένου από XML αρχείο: $xmlData = new SimpleXMLElement('test.xml',0,true); Αν στην πρώτη παράμετρο βάλουμε αρχείο τότε στην τρίτη πρέπει να βάλουμε true. Αν στην πρώτη παράμετρο βάλουμε τα XML δεδομένα ως αλφαριθμητικό, τότε δεν χρειάζονται οι άλλες παράμετροι. Παραδείγματα πρόσβασης σε τμήματα του XML δένδρου: Ηeadline πρώτης είδησης (αν δεν πω ρητά ποιος τότε εννοώ το πρώτο headline): $xmlData->story[0]->headline; //Godzilla Attacks LA! Ισοδύναμα: $xmlData->story[0]->headline[0]; To δεύτερο headline (δείκτης 1) της πρώτης είδησης (δείκτης 0): $xmlData->story[0]->headline[1]; //Επίθεση του Γκοτζίλα στο LA! Η ιδιότητα date του πρώτου headline της δεύτερης είδησης (δείκτης 1): $xmlData->story[1]->headline[@date]; //December 14, 2011 Η ιδιότητα lang του πρώτου headline (ρητά δηλωμένο) της πρώτης είδησης: $xmlData->story[0]->headline[0][@lang]; //en Η ιδιότητα date του δεύτερου headline της πρώτης είδησης ( με " " αντί @ ): $xmlData->story[0]->headline[1]["date"]; //December 19, 2011 Προγραμματισμός Εφαρμογών Διαδικτύου 10

...συνέχεια (παραδείγματα πρόσβασης) Σάρωση ολόκληρου του XML αντικειμένου και απλή εκτύπωση: foreach($xmlData->story as $story) { //πρόσβαση σε ένα στοιχείο print("<h2>".$story->headline."</h2><br/>"); print($story->description); print("<br/>________________________<br/>"); print($story->headline["date"]."<br/><br/>"); } Προφανώς το output μπορεί να μορφοποιηθεί καλύτερα π.χ. με CSS ή ακόμη καλύτερα με χρήση XML και XSL/XSLT Έξοδος παραπάνω κώδικα: EN: Godzilla Attacks LA! GR: Επίθεση του Γκοτζίλα στο LA! The monster attacked harbors along the California coast. ________________________ December 19, 2011 EN: Bigfoot Spotted at M.I.T. Dining Area. GR: The beast was seen in the dining area on Tuesday. ________________________ December 14, 2011 Προγραμματισμός Εφαρμογών Διαδικτύου 11

Χειρισμός XML σε PHP 5 (3) (με βάση τα δεδομένα του data.xml) Εκτέλεση XPath ερωτήσεων σε XML data: Μια XPath ερώτηση επιστρέφει ένα πίνακα με τα στοιχεία που βρίσκονται στη θέση που προσδιορίζει το path που δίνεται ως παράμετρος. $headlineText = $xmlData->xpath('/news/story[2]/headline'); echo $headlineText[0]; //θα τυπώσει το: Bigfoot Spotted at... Προσοχή: Οι δείκτες του XPath είναι με βάση το 1. Το $headlineText είναι πίνακας στους οποίους οι δείκτες είναι με βάση το 0. Σάρωση με XPath όλων των ιδιοτήτων (properties) ενός στοιχείου: $result = $xmlData->xpath('/news/story[1]'); foreach($result[0]->attributes() as $a=>$b) { echo $a,'="',$b,'"'; } Το παραπάνω θα τυπώσει: category="horror" importance="urgent" Προγραμματισμός Εφαρμογών Διαδικτύου 12

Δημιουργία XML output από PHP Για αποστολή (με php) XML απάντησης σε http κλήση browser, ξεκινάμε με: <?php header("Content-Type: text/xml; charset=UTF-8"); ?> και στην συνέχεια γράφουμε το υπόλοιπο περιεχόμενο, ανάλογα την εφαρμογή. Πρώτη γραμμή σε XML αρχείο: <?xml version="1.0" encoding="UTF-8"?> Για αλλαγή γραμμής μέσα στο XML αρχείο κάντε echo το: "\r\n" αφορά σε Windows (σε Unix: "\n", σε MacOS: "\r") \r : carriage return \n : line feed Προγραμματισμός Εφαρμογών Διαδικτύου 13

Προγραμματισμός Εφαρμογών Διαδικτύου Διάφορα... online XML Validators http://www.xmlvalidation.com/ http://www.w3schools.com/xml/xml_validator.asp Περισσότερα για SimpleXML ... http://www.php.net/manual/en/book.simplexml.php Εναλλακτικά: Χειρισμός XML μέσω του DOM API http://www.php.net/manual/en/book.dom.php Καλύτερη λύση για σύνθετα projects. Προγραμματισμός Εφαρμογών Διαδικτύου 14

Τέλος Ενότητας