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>";
return 0;
document.getElementById("demo").innerHTML = txt;
}
</body>
</html>

अपने आप प्रयास करें

उदाहरण बताया जाएगा:

  1. XML शब्दांश को xmlDoc में
  2. शाखा की शाखा प्राप्त करें
  3. प्रत्येक शाखा का नाम और उसके टेक्स्ट नोड के नोड वैल्यू आउटपुट करें

ब्राउज़रों के बीच DOM विश्लेषण में अंतर

सभी आधुनिक ब्राउज़र W3C DOM नियमावल का समर्थन करते हैं।

लेकिन, ब्राउज़रों के बीच कुछ अंतर हैं। एक महत्वपूर्ण अंतर है कि:

वे खाली जगह और नई पंक्ति को संसाधित करने के तरीके

DOM - खाली जगह और नई पंक्ति

XML आमतौर पर नोड के बीच में नई पंक्ति या खाली चिह्न रखता है। जब किसी साधारण संपादक (जैसे कि नोटपैड) से दस्तावेज़ को संपादित किया जाता है, तो यहां ऐसी ही स्थिति देखी जाती है।

इस उदाहरण (कॉर्टेंटन एडिटर से) में प्रत्येक पंक्ति के बीच में CR/LF (नई पंक्ति) है, और प्रत्येक शाखा के पहले दो खाली जगह हैं:

<book>
  <title>雅舍谈吃</title>
  <author>梁实秋</author>
  <press>江苏文艺出版社</press>
  <year>2013</year>
  <price>35</price>
  <ISBN>9787539962771</ISBN>
</book>

इंटरनेट एक्सप्लोरर 9 और इससे पहले की संस्करण खाली या नई पंक्ति को टेक्स्ट नोड के रूप में नहीं समझते, जबकि अन्य ब्राउज़र ऐसा करते हैं।

इस उदाहरण में जाना जाएगा कि (books.xml) में शाखा की संख्या क्या है। IE9 और इससे पहले की संस्करण छह शाखाएँ दिखाएंगी, जबकि IE10 और इससे बाद की संस्करण और अन्य ब्राउज़र नौ शाखाएँ दिखाएंगे:

उदाहरण

FUNCTION MYFUNCTION(XML) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "उप-चयनकारी संख्या: " + x.length;
return 0;

अपने आप प्रयास करें

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[" शुरू होता है, "" यह " टैग को CDATA भाग के अंत के लिए निर्दिष्ट करता है" अंत:

<SCRIPT>
<![CDATA[
FUNCTION MATCHWO(A,B) {
    IF (A < B AND A < 0) {
        RETURN 1;
    ELSE {
        return 0;
    return 0;
return 0;
" यह " टैग को CDATA भाग के अंत के लिए निर्दिष्ट करता है
}

</script>

उपरोक्त उदाहरण में, पार्सर चार्जी करेगा CDATA भाग के भीतर की सभी सामग्री

CDATA भाग के बारे में ध्यान करें:" यह " टैग को CDATA भाग के अंत के लिए निर्दिष्ट करता हैCDATA भाग को " शब्द नहीं शामिल कर सकते हैं

"।गहरे CDATA भाग नहीं शामिल कर सकते हैं।" यह " टैग को CDATA भाग के अंत के लिए निर्दिष्ट करता है']]>