Θέση στοιχείων του XML DOM

η τοποθεσία του κόμβου μπορεί να καθοριστεί χρησιμοποιώντας τη σχέση μεταξύ κόμβων.

Παράδειγμα

Ο παρακάτω παράδειγμα χρησιμοποιεί αρχείο XML books.xml.

λειτουργία loadXMLDoc()τοποθετημένος στο εξωτερικό JavaScript, χρησιμοποιείται για τη φόρτωση αρχείων XML.

Επιλογή του γονικού κόμβου του κόμβου
Αυτό το παράδειγμα χρησιμοποιεί την ιδιότητα parentNode για να αποκτήσει τον γονικό κόμβο του κόμβου.
Αποκτήστε τον πρώτο υποκείμενο κόμβο του κόμβου
Αυτό το παράδειγμα χρησιμοποιεί τη μέθοδο firstChild() και μια προσαρμοσμένη συναρτηση για να αποκτήσει τον πρώτο υποκείμενο κόμβο ενός κόμβου.

Εύρεση κόμβων DOM

Εκτελείται η πρόσβαση σε κόμβους του δέντρου κόμβων μέσω των σχέσεων μεταξύ κόμβων, και συχνά ονομάζεται "定位节点 (navigating nodes)".

Στο XML DOM, οι σχέσεις των κόμβων ορίζονται ως ιδιότητες του κόμβου:

  • parentNode
  • childNodes
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

Η παρακάτω εικόνα δείχνει books.xml Μια τμήμα του δέντρου κόμβων και εξηγεί τις σχέσεις μεταξύ των κόμβων:

Δέντρο κειμένου DOM

DOM - Γονικός κόμβος

Όλοι οι κόμβοι έχουν μόνο έναν γονικό κόμβο. Ο παρακάτω κώδικας τοποθετείται στον γονικό κόμβο του <book>:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0];
document.write(x.parentNode.nodeName);

Παράδειγμα ερμηνείας:

  • Με τη χρήση loadXMLDoc() Το "books.xmlείναι " κατεβάζεται στο xmlDoc
  • Αποκτήστε τον πρώτο στοιχειώδη κόμβο <book>
  • Εκτυπώστε το όνομα του γονικού κόμβου του "x"

TIY

Αποφυγή κενών κειμένων

Το Firefox και άλλοι μερικοί περιηγητές θεωρούν τα κενά και τις νέες γραμμές ως κείμενο κόμβους, ενώ το IE δεν το κάνει.

Αυτό προκαλεί ένα πρόβλημα όταν χρησιμοποιούμε τις παρακάτω ιδιότητες: firstChild, lastChild, nextSibling, previousSibling.

Για να αποφύγουμε την τοποθέτηση σε κενό κείμενο (χώροι και χαρακτήρες νέας γραμμής μεταξύ στοιχείων), χρησιμοποιούμε μια συναρτηση για να ελέγξουμε τον τύπο του κόμβου:

function get_nextSibling(n)
{
y=n.nextSibling;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}

Με τις παραπάνω συναρτήσεις, μπορούμε να χρησιμοποιήσουμε get_nextSibling(node) αντί για την ιδιότητα node.nextSibling.

Ανάλυση κώδικα:

Ο τύπος του στοιχειώδους κόμβου είναι 1. Αν ο同级 κόμβος δεν είναι ένας στοιχειώδης κόμβος, μετακινηθείτε στον επόμενο κόμβο μέχρι να βρείτε έναν στοιχειώδη κόμβο. Με αυτόν τον τρόπο, τόσο στο IE όσο και στο Firefox θα λάβετε τον ίδιο αποτέλεσμα.

Αποκτήστε τον πρώτο στοιχειώδη κόμβο

Η παρακάτω κώδικας δείχνει τον πρώτο στοιχειώδη κόμβο του πρώτου <book>:

<html>
<head>
<script type="text/javascript" src="loadxmldoc.js">
</script>
<script type="text/javascript">
//ελέγξει αν ο πρώτος κόμβος είναι ένας κόμβος στοιχείου
function get_firstChild(n)
{
y=n.firstChild;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}
</script>
</head>
<body>
<script type="text/javascript">
xmlDoc=loadXMLDoc("books.xml");
x=get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

Εκτύπωση:

title

Παράδειγμα ερμηνείας:

  • Με τη χρήση loadXMLDoc() Το "books.xml" Φορτώστε το xmlDoc
  • Χρησιμοποιήστε τη συνάρτηση get_firstChild στο πρώτο <book> για να αποκτήσετε τον πρώτο υποκόμβο του στοιχείου κόμβου
  • Εκτύπωση του ονόματος του πρώτου υποκόμβου (στοιχείο κόμβου)

TIY

Παράδειγμα

Η παρακάτω παράδειγμα χρησιμοποιεί παρόμοιες συνάρτησεις:

  • firstChild: TIY
  • lastChild: TIY
  • nextSibling: TIY
  • previousSibling: TIY