एक्सएमएल डोम - नेविगेटिंग नोड्स
नोड संबंधों का उपयोग करके नोड्स को नेविगेट किया जा सकता है।
डोम नोड्स नेविगेट करना
नोड्स के बीच संबंध के माध्यम से नोड ट्री में नोड्स तक पहुंचना, अक्सर "नेविगेटिंग नोड्स" कहा जाता है।
एक्सएमएल डोम में, नोड संबंधों को नोड्स के गुणों के रूप में परिभाषित किया जाता है:
- पैरेंटनोड
- चाइल्डनोड्स
- पहला बच्चा
- आखरी बच्चा
- अगला सहोदर
- पिछला सहोदर
निम्न छवि नोड ट्री के एक भाग और Books.xml में नोड्स के बीच संबंध को दर्शाती है :
डोम - जनक नोड
सभी नोड्स में बिल्कुल एक पैरेंट नोड होता है। निम्न कोड <पुस्तक> के पैरेंट नोड पर नेविगेट करता है:
उदाहरण
function myFunction(xml) {
var xmlDoc = xml.responseXML;
var x = xmlDoc.getElementsByTagName("book")[0];
document.getElementById("demo").innerHTML = x.parentNode.nodeName;
}
उदाहरण समझाया:
- " books.xml " को xmlDoc में लोड करें
- पहला <पुस्तक> तत्व प्राप्त करें
- "X" के मूल नोड का नोड नाम आउटपुट करें
खाली टेक्स्ट नोड्स से बचें
फ़ायरफ़ॉक्स, और कुछ अन्य ब्राउज़र, खाली सफेद-रिक्त स्थान या नई लाइनों को टेक्स्ट नोड्स के रूप में मानेंगे, इंटरनेट एक्सप्लोरर नहीं करेगा।
गुणों का उपयोग करते समय यह एक समस्या का कारण बनता है: फर्स्टचाइल्ड, लास्टचाइल्ड, नेक्स्टसिबलिंग, पिछला सिबलिंग।
खाली टेक्स्ट नोड्स (तत्व नोड्स के बीच रिक्त स्थान और नई-पंक्ति वर्ण) पर नेविगेट करने से बचने के लिए, हम एक फ़ंक्शन का उपयोग करते हैं जो नोड प्रकार की जांच करता है:
function get_nextSibling(n)
{
var y = n.nextSibling;
while (y.nodeType! = 1)
{
y = y.nextSibling;
}
return y;
}
उपरोक्त फ़ंक्शन आपको संपत्ति नोड .nextSibling के बजाय get_nextSibling( नोड ) का उपयोग करने की अनुमति देता है ।
कोड समझाया:
एलिमेंट नोड्स टाइप 1 हैं। यदि सिबलिंग नोड एक एलिमेंट नोड नहीं है, तो यह अगले नोड्स में तब तक चला जाता है जब तक कि एक एलिमेंट नोड नहीं मिल जाता। इस तरह, परिणाम इंटरनेट एक्सप्लोरर और फ़ायरफ़ॉक्स दोनों में समान होगा।
पहला बाल तत्व प्राप्त करें
निम्न कोड पहले <पुस्तक> का पहला तत्व नोड प्रदर्शित करता है:
उदाहरण
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.open("GET",
"books.xml", true);
xhttp.send();
function myFunction(xml) {
var xmlDoc = xml.responseXML;
var x = get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
document.getElementById("demo").innerHTML = x.nodeName;
}
//check if
the first node is an element node
function get_firstChild(n) {
var y = n.firstChild;
while (y.nodeType != 1) {
y = y.nextSibling;
}
return y;
}
</script>
</body>
</html>
आउटपुट:
title
उदाहरण समझाया:
- " books.xml " को xmlDoc में लोड करें
- पहला चाइल्ड नोड प्राप्त करने के लिए पहले <पुस्तक> तत्व नोड पर get_firstChild फ़ंक्शन का उपयोग करें जो एक तत्व नोड है
- पहले चाइल्ड नोड का नोड नाम आउटपुट करें जो एक तत्व नोड है
और ज्यादा उदाहरण
यह उदाहरण एक नोड के अंतिम चाइल्ड नोड को प्राप्त करने के लिए lastChild () विधि और एक कस्टम फ़ंक्शन का उपयोग करता है
यह उदाहरण एक नोड के अगले सिबलिंग नोड को प्राप्त करने के लिए नेक्स्टसिब्लिंग () विधि और एक कस्टम फ़ंक्शन का उपयोग करता है
यह उदाहरण पिछले सिबलिंग () विधि और एक कस्टम फ़ंक्शन का उपयोग नोड के पिछले सिबलिंग नोड को प्राप्त करने के लिए करता है