एक्सएमएल डॉम पार्सिंग

अधिकांश ब्राउज़रों में XML को पढ़ने और ऑपरेट करने के लिए एक्सएमएल पार्सर बैठे हैं

पार्सर एक्सएमएल को जावास्क्रिप्ट के द्वारा अणूद्वारा अणू ऑब्जैक्ट में बदलता है

उदाहरण

CodeW3C.com द्वारा प्रदान की गई उदाहरण ब्राउज़र और प्लेटफॉर्म से निर्भर नहीं हैं। ये उदाहरण सभी आधुनिक ब्राउज़रों में चल सकते हैं

एक्सएमएल फ़ाइल लोड करें और पार्सर करें
एक्सएमएल स्ट्रिंग लोड करें और पार्सर करें

एक्सएमएल पार्सर

सभी आधुनिक ब्राउज़रों में XML को पढ़ने और ऑपरेट करने के लिए एक्सएमएल पार्सर बैठे हैं

पार्सर एक्सएमएल को स्मृति में पढ़ता है और इसे जावास्क्रिप्ट डॉम (एक्सएमएल डॉम) ऑब्जैक्ट में बदलता है

माइक्रोसॉफ्ट के पार्सर और अन्य ब्राउज़रों में पार्सरों में अंतर है। माइक्रोसॉफ्ट के पार्सर XML फ़ाइल और XML स्ट्रिंग (पाठ) को लोड करने का समर्थन करता है जबकि अन्य ब्राउज़र अलग से पार्सर का उपयोग करते हैं। हालांकि, सभी पार्सर एक्सएमएल ट्री को घूमने के लिए फ़ंक्शन, नोड को आकस्मिक रूप से देखने, जोड़ने और अनुसूचित करने के लिए फ़ंक्शन शामिल करते हैं

इस ट्यूटोरियल में हम आपको सीखाएंगे कि कैसे आईई और अन्य ब्राउज़रों में चलने वाले स्क्रिप्ट बनाए जाते हैं

माइक्रोसॉफ्ट के XML पार्सर से XML लोड करें

माइक्रोसॉफ्ट के XML पार्सर इंटरनेट एक्सप्लोरर 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() फ़ाइल लोड करने के लिए उपयोग में आता है。

Firefox और अन्य ब्राउज़रों में XML इंटरप्रेटर

नीचे का 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, etc.
    {
    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>

TIY

त्रुटि: डोम के बीच एक्सेस

सुरक्षा कारणों से, आधुनिक ब्राउज़रों द्वारा क्रॉस-डोम एक्सेस की अनुमति नहीं दी जाती है.

इसका मतलब है कि, वेबपेज और उसका जो XML फ़ाइल लोड करने का प्रयास करता है, दोनों को एक ही सर्वर पर होना चाहिए.

CodeW3C.com के इंस्टांस द्वारा खोली गई XML फ़ाइल 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, etc.
    {
    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>

TIY

टिप्पणी:Internet Explorer loadXML() विधि का उपयोग करके XML वर्णांक को विश्लेषित करता है, और अन्य ब्राउज़र DOMParser वस्तु