2009-05-08 2 views
5

Ich suche nach einer Möglichkeit, den Inhalt einer XML-Datei direkt in eine Javascript-Variable zu laden. Sagen, dass ich die folgende Verzeichnisstruktur habe:Wie Laden von XML-Datei Inhalt mit Javascript?

/index.html 
/loader.js 
/file.xml 

In index.html gibt es einen <body>-Tag, dessen Inhalt mit dem Inhalt der XML-Datei ersetzt werden soll. Also, wenn die XML-Datei enthält:

<element> 
    <item>Item One</item> 
    <item>Item Two</item> 
</element> 

Dann, nach der dynamischen Belastung würde die HTML sein:

... 
<body> 
<element> 
... 
</element> 
</body> 
... 

Meine Frage ist, welche Funktion kann ich in loader.js, um den Inhalt direkt in eine laden Variable? Ich habe XmlHttpRequests und den ActiveX XMLDOM-Parser verwendet, aber alle geben mir nur ein strukturelles Datenmodell, das ich dann durchsortieren muss, um meine Elemente zu finden. Ich brauche nichts zu parsen, ich möchte nur den ganzen Inhalt der Datei erhalten.

Hinweis: Nur HTML/Javascript, kein serverseitiger Code.

+0

Dies kann komerzhaft mit einfachem JavaScript zu tun haben, verwenden Sie irgendwelche Frameworks? (bevor jemand sagt "jQuery verwenden" ...) – roryf

Antwort

4

Ich denke, dass ich es herausgefunden haben kann. Die folgende scheint ziemlich gut zu funktionieren:

function loadFileToElement(filename, elementId) 
{ 
    var xmlHTTP = new XMLHttpRequest(); 
    try 
    { 
    xmlHTTP.open("GET", filename, false); 
    xmlHTTP.send(null); 
    } 
    catch (e) { 
     window.alert("Unable to load the requested file."); 
     return; 
    } 

    document.getElementById(elementId).innerHTML=xmlHTTP.responseText; 
} 
+0

Sie könnten in Betracht ziehen, dies asynchron auszuführen. Synchrone AJAX-Anfragen können die Benutzeroberfläche des Browsers sperren und den Nutzern den Eindruck vermitteln, dass ihr Browser hängen geblieben ist. –

+0

Dies wird zwar von der Client-Seite ausgeführt, nicht von einem Server, daher machen wir uns keine Sorgen über die Leistung. Doppelklicken Sie auf eine HTML-Datei auf Ihrem Desktop. –

2

Vielleicht können Sie die Eigenschaft response von XmlHttpRequests lesen Sie den Klartext vor dem Parsing haben?