Αναλυτής XML Expat στο PHP
Ο ενσωματωμένος αναλυτής Expat επιτρέπει την επεξεργασία εγγράφων XML στο PHP.
Το XML χρησιμοποιείται για να περιγράψει δεδομένα, το ενδιαφέρον του είναι τι είναι τα δεδομένα. Το αρχείο XML περιγράφει τη δομή των δεδομένων.
Τι είναι το XML?
Στο XML, δεν υπάρχουν προκαθορισμένα σήματα. Πρέπει να ορίσετε τα δικά σας σήματα.
Αν θέλετε να μάθετε περισσότερα για το XML, επισκεφθείτε το Εκμάθηση XML.
Τι είναι το Expat?
Για να διαβάσετε και να ενημερώσετε - δημιουργήστε και χειριστείτε - ένα έγγραφο XML, χρειάζεστε αναλυτή XML.
Υπάρχουν δύο βασικά τύποι αναλυτών XML:
- Αναλυτής δέντρου: Αυτός ο αναλυτής μετατρέπει το έγγραφο XML σε δέντρο. Ανализuje ολόκληρο το έγγραφο και παρέχει API για την πρόσβαση στα στοιχεία του δέντρου, όπως το μοντέλο αντικειμένων (DOM).
- Αναλυτής γεγονότων: Διαχειρίζεται το έγγραφο XML ως μια σειρά γεγονότων. Όταν συμβαίνει ένα συγκεκριμένο γεγονός, ο αναλυτής καλεί συνάρτησεις για να το χειριστεί.
Αναλυτής γεγονότων
Ο αναλυτής γεγονότων επικεντρώνεται στο περιεχόμενο του εγγράφου XML, αντί για το αποτέλεσμα τους. Επομένως, ο αναλυτής γεγονότων μπορεί να προσπερνά τα δεδομένα πιο γρήγορα από τον αναλυτή δέντρου.
Δείτε τον παρακάτω κλάσμα XML:
<from>Ιωάννης</from>
Ο αναλυτής γεγονότων αναφέρει το παραπάνω XML ως μια σειρά από τρία γεγονότα:
- Άρχιση στοιχείου: from
- Άρχιση του τμήματος CDATA, τιμή: Ιωάννης
- Κλείσιμο στοιχείου: from
Το παρακάτω παράδειγμα XML περιέχει καλά διαμορφωμένο XML. Ωστόσο, αυτό το παράδειγμα είναι μη έγκυρο XML, επειδή δεν έχει σχετική διαclaration τύπου αρχείου (DTD) και δεν περιέχει ενσωματωμένη DTD.
Ωστόσο, δεν υπάρχει διαφορά στην χρήση του αναλυτή Expat. Ο Expat δεν ελέγχει την εγκυρότητα, αγνοεί οποιαδήποτε DTD.
Ως αναλυτής XML βασισμένος σε γεγονότα και μη επιβεβαιωμένος, ο Expat είναι γρήγορος και ελαφρύς, ιδανικός για τις εφαρμογές web του PHP.
Σημείωση:Το έγγραφο XML πρέπει να είναι καλά διαμορφωμένο, αλλιώς ο Expat θα δημιουργήσει σφάλματα.
Εγκατάσταση
Ο αναλυτής XML Expat είναι μέρος του κουλοχέρη PHP. Μπορείτε να χρησιμοποιήσετε αυτές τις συνάρτησεις χωρίς να χρειάζεται να το εγκαταστήσετε.
Αρχείο XML
Θα χρησιμοποιήσουμε το παρακάτω αρχείο XML στον παράδειγμα μας:
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Γεώργιος</to> <from>Ιωάννης</from> <heading>Μνήμη</heading> <body>Μη ξεχνάτε την συνάντηση!</body> </note>
Εν�始化 XML 解析器
Θα πρέπει να ξεκινήσουμε έναν αναλυτή XML στο PHP, να ορίσουμε επεξεργαστές για διαφορετικά γεγονότα XML και στη συνέχεια να αναλύσουμε το αρχείο XML.
Εκδρομή
<?php //Initialize the XML parser $parser=xml_parser_create(); //Function to use at the start of an element function start($parser,$element_name,$element_attrs) { switch($element_name) { case "NOTE": echo "-- Note --<br />"; break; case "TO": echo "To: "; break; case "FROM": echo "From: "; break; case "HEADING": echo "Heading: "; break; case "BODY": echo "Message: "; } } //Function to use at the end of an element function stop($parser,$element_name) { echo "<br />"; } //Function to use when finding character data function char($parser,$data) { echo $data; } //Specify element handler xml_set_element_handler($parser,"start","stop"); //Specify data handler xml_set_character_data_handler($parser,"char"); //Open XML file $fp=fopen("test.xml","r"); //Read data while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } //Ελευθερώστε τον αναλυτή XML xml_parser_free($parser); ?>
Η έξοδος του παραπάνω κώδικα:
-- Σημείωση -- Σε: George Από: John Κεφαλίδα: Εμνευστής Μην ξεχνάτε τη συνάντηση!
Επεξήγηση της δουλειάς
- Εκκίνηση του XML αναλυτή μέσω της συνάρτησης xml_parser_create()
- Δημιουργία συναρτήσεων που συνδυάζονται με διαφορετικούς επεξεργαστές συμβάντων
- Προσθέστε τη συνάρτηση xml_set_element_handler() για να ορίσετε ποια συνάρτηση θα εκτελεστεί όταν ο ανάλυστης αντιμετωπίσει σήματα αρχής και λήξης
- Προσθέστε τη συνάρτηση xml_set_character_data_handler() για να ορίσετε ποια συνάρτηση θα εκτελεστεί όταν ο ανάλυστης αντιμετωπίσει δεδομένα χαρακτήρων
- Αναλύστε το αρχείο "test.xml" μέσω της συνάρτησης xml_parse()
- Αν υπάρχουν σφάλματα, προσθέστε τη συνάρτηση xml_error_string() για να μετατρέψετε τα σφάλματα XML σε κείμενο 설ήφθησης
- Χρησιμοποιήστε τη συνάρτηση xml_parser_free() για να ελευθερώσετε τη μνήμη που έχει κατανάλωσει η συνάρτηση xml_parser_create()
Περισσότερες πληροφορίες για τον ανάλυστη PHP Expat
Για περισσότερες πληροφορίες σχετικά με τις λειτουργίες του PHP Expat, παρακαλώ επισκεφθείτε το εγχειρίδιο του PHP XML Parser.