2013-08-26 6 views
5

मुझे जावास्क्रिप्ट का उपयोग करके एक एक्सएमएल फ़ाइल लोड और पढ़ने की जरूरत है।क्रोम में जावास्क्रिप्ट का उपयोग कर एक्सएमएल फ़ाइल पढ़ें

निम्नलिखित कोड फ़ायरफ़ॉक्स में ठीक काम करता है, IE और ओपेरा:

function loadXMLDoc(dname) { 
    var xmlDoc 

    // Internet Explorer 
    try { 
    xmlDoc = new ActiveXObject('Microsoft.XMLDOM') 
    } 
    catch (e) { 
    // Firefox, Opera, etc. 
    try { 
     xmlDoc = document.implementation.createDocument('', '', null) 
    } 
    catch (e) { 
     alert(e.message) 
    } 
    } 

    try { 
    xmlDoc.async = false 
    xmlDoc.load(dname) 
    return xmlDoc 
    } 
    catch (e) { 
    alert(e.message) 
    } 

    return null 
} 

लेकिन क्रोम में इस कोड को क्रियान्वित करने के लिए मुझे इस त्रुटि देता है:

Object# has no method "load"

+0

क्या यह 'लोड' के बजाय' loadXML' नहीं है? – putvande

+0

हाय @ Putvande..मुझे जवाब देने के लिए धन्यवाद, मैं आपसे नहीं मिल सकता? लोडक्सएमएल सिर्फ एक समारोह है जो w3school वेबसाइट से लेता है। मेरी समस्या यह है कि क्रोम ब्राउज़र ठीक काम नहीं करेगा .. मेरी समस्या के लिए कोई विचार? – user2711066

+0

DOMParser/Microsoft.XMLDOM के बजाय XMLDocument ऑब्जेक्ट का उपयोग क्यों करें? आप xml पाठ को xhmlhttp अनुरोध के साथ लोड कर सकते हैं। – HMR

उत्तर

4

परंपरागत कोड

document.implementation.createDocument नहीं है क्रोम और सफारी पर काम करें।

उपयोग XMLHttpRequest बजाय जब संभव:

function loadXMLSync(url) { 
    try { 
    // Prefer XMLHttpRequest when available 
    var xhr = new XMLHttpRequest() 
    xhr.open('GET', url, false) 
    xhr.setRequestHeader('Content-Type', 'text/xml') 
    xhr.send() 

    return xmlhttp.responseXML 
    } 
    catch (e) { 
    // XMLHttpRequest not available, fallback on ActiveXObject 
    try { 
     var activex = new ActiveXObject('Microsoft.XMLDOM') 
     activex.async = false 
     activex.load(url) 

     return activex 
    } 
    catch (e) { 
     // Neither XMLHttpRequest or ActiveXObject are available 
     return undefined 
    } 
    } 
} 

आधुनिक ब्राउज़रों

आप आधुनिक ब्राउज़रों (> IE6) को लक्षित कर रहे हैं, तो बस XMLHttpRequest का उपयोग करें:

function loadXMLSync(url) { 
    var xhr = new XMLHttpRequest() 

    xhr.open('GET', url, false) 
    xhr.setRequestHeader('Content-Type', 'text/xml') 
    xhr.send() 

    return xhr.responseXML 
} 
+0

अच्छी तरह से सेट! आपका कोड मेरे लिए बिल्कुल अद्भुत है .. यह मेरे लिए अच्छा काम करता है ... – user2711066

+0

ActiveXObject आधुनिक ब्राउज़र के लिए बहिष्कृत नहीं है? – mmcrae

1

पर एमडीएन, XMLHttpRequest का उपयोग करने के लिए मार्गदर्शन है। लेकिन यह DOMImplementation.createDocument से स्पष्ट नहीं है जब तक कि आप रिटर्न प्रकार में ड्रिल न करें और देखें कि XMLDocument Google क्रोम में समर्थित नहीं है। example on W3Schools XMLHttpRequest का उपयोग करता है।

0

इस का पालन करें मुद्रित, लोड, एक्सएमएल संलग्न करने के लिए अंदर javascript.This विधि क्रोम में काम करता है data.Here एक्सएमएल स्ट्रिंग के रूप में संग्रहीत किया जाता है, फ़ायरफ़ॉक्स को उम्मीद है कि यह दूसरों में भी काम करेगा

txt="<papers>"+"<paper>"+ 
"<author>athor name</author>"+ 
"<title>title</title>"+ 
"<path>path</path>"+ 
"<track>which tack</track>"+ 
"</paper>"+ 
"<paper>"+ 
"<author>athor name</author>"+ 
"<title>title</title>"+ 
"<path>path</path>"+ 
"<track>which tack</track>"+ 
"</paper>"+ 
"<paper>"+ 
"<author>athor name</author>"+ 
"<title>title</title>"+ 
"<path>path</path>"+ 
"<track>which tack</track>"+ 
"</paper>"+ 
"<papers>"; 
if (window.DOMParser) 
    { 
     parser=new DOMParser(); 
    xmlDoc=parser.parseFromString(txt,"text/xml"); 

    } 
    else // Internet Explorer 
    { 
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async=false; 
    xmlDoc.loadXML(txt); 
    } 

x=xmlDoc.getElementsByTagName("paper"); 
for (var i = 0; i < x.length; i++) { 
    var athor =x[i].childNodes[0].firstChild.nodeValue; 
    var title = x[i].childNodes[1].firstChild.nodeValue; 
    var path = x[i].childNodes[2].firstChild.nodeValue; 
    var tack =x[i].childNodes[3].firstChild.nodeValue; 
    //do something with these values... 
    //each iteration gives one paper details  
    var xml=document.getElementById("element_id");//<div id="element_id"></div> 
    var li = document.createElement("br");// create a new <br> 
    newlink = document.createElement('A'); // creating an <a> element 
    newlink.innerHTML = athor;// adding <a>athor value here</a> 
    newlink.setAttribute('href', path);// <a href="path"></a> 

    newlink.appendChild(li);// <a href="path">athor</a><br> 
    document.getElementById("element_id").appendChild(newlink); 
//finaly it becomes <div id="element_id"><a href="path">athor</a><br></div> 


} 

मैं इस उत्तर पोस्ट here

संबंधित मुद्दे