2009-05-08 13 views
5

Sto cercando un modo per caricare i contenuti di un file XML direttamente in una variabile Javascript. Dire che ho la seguente struttura di directory:Come caricare il contenuto del file XML utilizzando Javascript?

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

In index.html, c'è un tag <body>, il cui contenuto deve essere sostituito con il contenuto del file XML. Quindi, se il file XML contiene:

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

Poi, dopo il carico dinamico, l'HTML sarebbe:

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

La mia domanda è, quale funzione posso usare in loader.js per caricare il contenuto direttamente in un variabile? Ho usato XmlHttpRequests e il parser ActiveX XMLDOM, ma mi danno solo un modello di dati strutturali che devo poi ordinare per trovare i miei elementi. Non ho bisogno di analizzare nulla, voglio solo ottenere tutti i contenuti del file.

Nota: Solo HTML/Javascript, nessun codice lato server.

+0

Questo può essere scomodo da fare con JavaScript vecchio-semplice, stai usando qualche framework? (prima che qualcuno dica "usa jQuery" ...) – roryf

risposta

4

Penso di aver capito. Quanto segue sembra funzionare abbastanza bene:

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

Si potrebbe prendere in considerazione l'esecuzione in modo asincrono. Le richieste sincrone AJAX possono bloccare l'interfaccia utente del browser dando agli utenti un'impressione di blocco del browser. –

+0

Questo verrà eseguito dal lato client, però, non su un server, quindi non siamo troppo preoccupati per le prestazioni. Fare doppio clic sull'immagine su un file HTML sul desktop. –

2

forse si può leggere la proprietà responseText di XMLHttpRequests di avere il testo in chiaro prima del parsing?

Problemi correlati