Ανάλυση του XML DOM
- Προηγούμενη σελίδα Δέντρο κόμβων DOM
- Επόμενη σελίδα Φόρτωση DOM
Οι περισσότεροι περιηγητές έχουν ενσωματωμένους αναλυτές XML για την ανάγνωση και την επεξεργασία XML.
Ο αναλυτής μετατρέπει το XML σε αντικείμενα που μπορούν να προσπελάσουν το JavaScript.
Παράδειγμα
Οι παραδείγματα που παρέχει το CodeW3C.com είναι ανεξάρτητα από τους περιηγητές και τις πλατφόρμες. Αυτά τα παραδείγματα μπορούν να εκτελεστούν σε όλους τους σύγχρονους περιηγητές.
Ανάλυση XML
Όλοι οι σύγχρονοι περιηγητές έχουν ενσωματωμένους αναλυτές XML για την ανάγνωση και την επεξεργασία XML.
Ο αναλυτής διαβάζει το XML στη μνήμη και το μετατρέπει σε αντικείμενα XML DOM που μπορούν να προσπελάσουν το JavaScript.
Ο αναλυτής XML της微软 έχει διαφορές από τους αναλυτές άλλων περιηγητών. Ο αναλυτής της微软 υποστηρίζει τη φόρτωση αρχείων XML και αλφαβητικών συμβολοσειρών (κειμένου), ενώ άλλοι περιηγητές χρησιμοποιούν ξεχωριστούς αναλυτές. Ωστόσο, όλοι οι αναλυτές περιέχουν λειτουργίες για τον περιήγηση του δέντρου XML, την πρόσβαση, την εισαγωγή και την αφαίρεση κόμβων.
Σε αυτό το έργο, θα σας εξηγήσουμε πώς να δημιουργήσετε κώδικα που μπορεί να εκτελεστεί στο IE και άλλους περιηγητές.
Φόρτωση XML μέσω του αναλυτή XML της微软
Ο XML αναλυτής της微软 είναι ενσωματωμένος στους Internet Explorer 5 και μεταγενέστερες εκδόσεις.
Το παρακάτω κομμάτι JavaScript φορτώνει το αρχείο XML ("books.xml) Φορτώνει τον αναλυτή:
xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.load("books.xml");
Επεξήγηση Κώδικα:
- Η πρώτη γραμμή δημιουργεί ένα κενό αντικείμενο微软 XML.
- Η δεύτερη γραμμή κλείνει την ασύγχρονη φόρτωση, ώστε ο αναλυτής να μην συνεχίσει την εκτέλεση του κώδικα μέχρι να φορτωθεί πλήρως το έγγραφο
- Η τρίτη γραμμή ενημερώνει τον αναλυτή να φορτώσει το έγγραφο με το όνομα "books.xml"
Το παρακάτω κομμάτι JavaScript φορτώνει την αλφαβητική αλληλουχία με το όνομα "txt" στον αναλυτή:
xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(txt);
Σημείωση:loadXML() Η μέθοδος χρησιμοποιείται για τη φόρτωση αλφαβητικού (κειμένου), ενώ load() Χρησιμοποιείται για τη φόρτωση αρχείων.
Ο αναλυτής XML σε Firefox και άλλους διακομιστές
Το παρακάτω κομμάτι JavaScript φορτώνει το αρχείο XML ("books.xml) Φορτώνει τον αναλυτή:
xmlDoc=document.implementation.createDocument("","",null); xmlDoc.async="false"; xmlDoc.load("books.xml");
Επεξήγηση Κώδικα:
- Η πρώτη γραμμή δημιουργεί έναν κενό αντικείμενο XML
- Η δεύτερη γραμμή κλείνει την ασύγχρονη φόρτωση, ώστε ο αναλυτής να μην συνεχίσει την εκτέλεση του κώδικα μέχρι να φορτωθεί πλήρως το έγγραφο
- Η τρίτη γραμμή ενημερώνει τον αναλυτή να φορτώσει το έγγραφο με το όνομα "books.xml"
Το παρακάτω κομμάτι JavaScript φορτώνει την αλφαβητική αλληλουχία με το όνομα "txt" στον αναλυτή:
parser=new DOMParser(); xmlDoc=parser.parseFromString(txt,"text/xml");
Επεξήγηση Κώδικα:
- Η πρώτη γραμμή δημιουργεί έναν κενό αντικείμενο XML
- Η δεύτερη γραμμή ενημερώνει τον αναλυτή να φορτώσει την αλφαβητική αλληλουχία με το όνομα "txt"
Σημείωση:Internet Explorer χρησιμοποιεί loadXML() μεθόδους για την ανάλυση της αλφαβητικής αλληλουχίας XML, ενώ άλλοι διακομιστές χρησιμοποιούν DOMParser πρόσωπο.
Ανάλυση Αρχείου XML - Ένας διαπολιτισμικός παράδειγμα
Το παρακάτω παράδειγμα φορτώνει το αρχείο XML ("books.xml) Φορτώνει τον αναλυτή XML:
<html> <body> <script type="text/javascript"> try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } catch(e) { try //Firefox, Mozilla, Opera, κ.λπ. { xmlDoc=document.implementation.createDocument("","",null); } catch(e) {alert(e.message)} } try { xmlDoc.async=false; xmlDoc.load("books.xml"); document.write("xmlDoc is loaded, ready for use"); } catch(e) {alert(e.message)} </script> </body> </html>
Σφάλμα: Προσπέλαση Μεταξύ Τομέων
Από ασφαλιστικούς λόγους, οι σύγχρονοι διακομιστές δεν επιτρέπουν την πρόσβαση μεταξύ τομέων.
Αυτό σημαίνει ότι η ιστοσελίδα και το αρχείο XML που προσπαθεί να φορτώσει, πρέπει να βρίσκονται στον ίδιο διακομιστή.
Το παράδειγμα που ανοίγει το αρχείο XML το CodeW3C.com βρίσκεται στον τομέα του CodeW3C.com.
Αν θέλεις να χρησιμοποιήσεις το παραπάνω παράδειγμα στη δική σου ιστοσελίδα, πρέπει να τοποθετήσεις το αρχείο XML στον δικό σου διακομιστή. Διαφορετικά, το xmlDoc.load() θα προκαλέσει σφάλμα "Access is denied".
Ανάλυση αλφαβητικής αλληλουχίας XML - Ένας διαπολιτισμικός παράδειγμα
Η παρακάτω κώδικας φορτώνει και αναλύει μια αλφαβητική αλληλουχία XML:
<html> <body> <script type="text/javascript"> text="<bookstore>" text=text+"<book>"; text=text+"<title>Harry Potter</title>"; text=text+"<author>J K. Rowling</author>"; text=text+"<year>2005</year>"; text=text+"</book>"; text=text+"</bookstore>"; try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(text); } catch(e) { try //Firefox, Mozilla, Opera, κ.λπ. { parser=new DOMParser(); xmlDoc=parser.parseFromString(text,"text/xml"); } catch(e) {alert(e.message)} } document.write("xmlDoc is loaded, ready for use"); </script> </body> </html>
Σημείωση:O Internet Explorer χρησιμοποιεί το loadXML() για να αναλύσει τη συμβολοσειρά XML, ενώ οι άλλοι περιηγητές χρησιμοποιούν DOMParser όντοτητα.
- Προηγούμενη σελίδα Δέντρο κόμβων DOM
- Επόμενη σελίδα Φόρτωση DOM