Ανάπτυξη κόμβων XML DOM
Η ανάπτυξη (Traverse) σημαίνει να περπατήσετε το δέντρο κόμβων.
Ανάπτυξη δέντρου κόμβων
Συνήθως χρειάζεστε να επαναλάβετε το κείμενο XML, όπως: όταν θέλετε να εξάγετε τις τιμές κάθε στοιχείου.
Αυτό το πρόγραμμα ονομάζεται "ανάπτυξη δέντρου κόμβων"
Η παρακάτω παράδειγμα επαναλαμβάνει τον κύκλο των παιδικών κόμβων του <book> και εμφανίζει τα ονόματα και τις τιμές τους:
παράδειγμα}}
<!DOCTYPE html> <html> <body> <p id="demo"></p> <script> var x, i ,xmlDoc; var txt = ""; var text = "<book>" + "<title>雅舍谈吃</title>" + "<author>梁实秋</author>" + "<year>2013</year>" + "</book>"; parser = new DOMParser(); xmlDoc = parser.parseFromString(text,"text/xml"); // documentElement πάντα υποδηλώνει τον ρίζα κόμβο x = xmlDoc.documentElement.childNodes; for (i = 0; i < x.length ;i++) { txt += x[i].nodeName + ": " + x[i].childNodes[0].nodeValue + "<br>"; } document.getElementById("demo").innerHTML = txt; </script> </body> </html>
Προσπάθησε να το δοκιμάσεις προσωπικά
Παράδειγμα ερμηνείας:
- Περιλαμβάνουν την αλφαβητική αλυσίδα XML
xmlDoc
μεταξύ - Αποκτούν τους υπονοードούς του ρίζα στοιχείου
- Εκτυπώνουν τα ονόματα των υπονοードών και τις τιμές των κειμένων τους
Διαφορές μεταξύ των περιηγητών στη διαχείριση DOM
Όλοι οι σύγχρονοι περιηγητές υποστηρίζουν τα πρότυπα W3C DOM.
Ωστόσο, υπάρχουν κάποιες διαφορές μεταξύ των περιηγητών. Μια σημαντική διαφορά είναι:
Ο τρόπος που χειρίζονται τα κενά και τις νέες γραμμές τους
DOM - Κενά και νέες γραμμές
Το XML περιέχει συνήθως κενά ή χαρακτήρες λευκής διάστασης μεταξύ των κόμβων. Όταν χρησιμοποιούνται απλοί επεξεργαστές κειμένου όπως το Notepad, συνήθως εμφανίζεται αυτή η κατάσταση.
Το παράδειγμα που ακολουθεί (επεξεργασμένο από το Notepad) περιέχει CR/LF (νέες γραμμές) μεταξύ των γραμμών και有两个空格 πριν από κάθε υπονοードό:
<book> <title>雅舍谈吃</title> <author>梁实秋</author> <press>江苏文艺出版社</press> <year>2013</year> <price>35</price> <ISBN>9787539962771</ISBN> </book>
Ο Internet Explorer 9 και οι προηγούμενες εκδόσεις δεν θεωρούν κενά ή νέες γραμμές ως κείμενος κόμβους, ενώ άλλοι περιηγητές το κάνουν αυτό.
Το παράδειγμα που ακολουθεί θα εμφανίσει τον αριθμό των υπονοードών του ρίζα στοιχείου (books.xml). Οι εκδόσεις του IE9 και οι προηγούμενες δεν θα θεωρούν κενά ή νέες γραμμές ως κείμενος κόμβοι, ενώ άλλοι περιηγητές θα το κάνουν αυτό:
παράδειγμα}}
λειτουργία myFunction(xml) { var xmlDoc = xml.responseXML; x = xmlDoc.documentElement.childNodes; document.getElementById("demo").innerHTML = "Αριθμός υποστοιχείων: " + x.length; }
PCDATA - Αναλυμένα Χαρακτήρων Δεδομένα (Parsed Character Data)
Ο αναλυτής XML συνήθως αναλύει όλα τα κείμενα του έγγραφου XML.
Η αναλυση των στοιχείων XML θα περιλαμβάνει επίσης το κείμενο μεταξύ των σημάτων XML:
<message>Αυτό το κείμενο θα αναλυθεί επίσης</message>
Ο αναλυτής εκτελεί αυτήν την ενέργεια επειδή τα στοιχεία XML μπορούν να περιέχουν άλλα στοιχεία, όπως στο παράδειγμα, όπου το στοιχείο <name> περιέχει άλλα δύο στοιχεία (first και last):
<name><first>Bill</first><last>Gates</last></name>
Ο αναλυτής θα το αναλύσει σε εξής υποστοιχεία:
<name> <first>Bill</first> <last>Gates</last> </name>
“Αναλυμένα Χαρακτήρων Δεδομένα” (PCDATA) είναι ο όρος που χρησιμοποιείται για να περιγράψει τα δεδομένα κειμένου που θα αναλυθούν από τον αναλυτή XML.
CDATA - Ανέπαφο Χαρακτήρων Δεδομένα (Unparsed Character Data)
Ο όρος CDATA χρησιμοποιείται για να περιγράψει τα δεδομένα κειμένου που δεν πρέπει να αναλύονται από τον αναλυτή XML.
"<
" και "&
" κ.λπ. χαρακτήρες είναι παράνομοι στους στοιχείους XML.
"<
" θα προκαλέσει σφάλμα, επειδή ο αναλυτής το εξηγεί ως αρχή νέου στοιχείου.
"&
" θα προκαλέσει σφάλμα, επειδή ο αναλυτής το εξηγεί ως αρχή χαρακτήρων.
Κάποια κείμενα (π.χ. κώδικας JavaScript) περιέχουν πολλά "<
" ή "&
" χαρακτήρες. Για να αποφύγουμε σφάλματα, μπορεί να οριστεί το κώδικα σκοπιμότητας ως CDATA.
όλα τα περιεχόμενα εντός του CDATA τμήματος θα αγνοηθούν από τον αναλυτή.
CDATA τμήμα με "<![CDATA[
" Αρχή, με "]]>
" Τέλος:
<script> <![CDATA[ λειτουργία matchwo(a,b) { αν (a < b && a < 0) { επιστρέφει 1; άλλως { return 0; } } ]]> </script>
在上面的示例中,解析器会忽略 CDATA 部分内的所有内容。
关于 CDATA 部分的注意事项:
CDATA 部分不能包含字符串 "]]>
"。不允许嵌套 CDATA 部分。
标记 CDATA 部分结尾的 "]]>
" 不能包含空格或换行符。