2009-05-08 8 views
5

Je cherche un moyen de charger le contenu d'un fichier XML directement dans une variable Javascript. Dire que j'ai la structure de répertoire suivant:Comment charger le contenu d'un fichier XML en utilisant Javascript?

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

En index.html, il y a une étiquette <body>, dont le contenu doit être remplacé par le contenu du fichier XML. Donc, si le fichier XML contient:

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

Puis, après la charge dynamique, le code HTML serait:

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

Ma question est, quelle fonction puis-je utiliser loader.js pour charger le contenu directement dans un variable? J'ai utilisé XmlHttpRequests et l'analyseur ActiveX XMLDOM, mais tous me donnent un modèle de données structurelles que je dois ensuite trier pour trouver mes éléments. Je n'ai pas besoin d'analyser quoi que ce soit, je veux juste obtenir tout le contenu du fichier.

Remarque: HTML/Javascript uniquement, pas de code côté serveur.

+0

Cela peut être compliqué à faire avec du JavaScript simple, utilisez-vous des cadres? (avant que quelqu'un ne dise "utiliser jQuery" ...) – roryf

Répondre

4

Je pense que je l'ai peut-être compris. Ce qui suit semble fonctionner assez bien:

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

Vous pouvez envisager d'exécuter ce programme de manière asynchrone. Les requêtes AJAX synchrones peuvent verrouiller l'interface utilisateur du navigateur, donnant aux utilisateurs l'impression que leur navigateur est bloqué. –

+0

Ceci sera exécuté depuis le côté client, pas sur un serveur, donc nous ne sommes pas trop inquiets pour les performances. Image en double-cliquant sur un fichier HTML sur votre bureau. –

2

Peut-être que vous pouvez lire la propriété responseText de XmlHttpRequest avoir le texte brut avant l'analyse syntaxique?

Questions connexes