2009-05-08 21 views
5

Estoy buscando una manera de cargar los contenidos de un archivo XML directamente en una variable de Javascript. Digamos que tiene la siguiente estructura de directorios:Cómo cargar contenido de archivos XML utilizando Javascript?

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

En index.html, hay una etiqueta <body>, cuyo contenido debe ser reemplazado por el contenido del archivo XML. Así que si el archivo XML contiene:

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

Luego, después de la carga dinámica, el código HTML sería:

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

Mi pregunta es, ¿qué función puedo utilizar en loader.js para cargar los contenidos directamente en una ¿variable? He usado XmlHttpRequests y el analizador XMLDOM de ActiveX, pero todos me dieron un modelo de datos estructurales que luego tengo que ordenar para encontrar mis elementos. No necesito analizar nada, solo quiero obtener todos los contenidos del archivo.

Nota: HTML/Javascript solamente, sin código de servidor.

+0

Esto puede ser combinador para hacer con JavaScript antiguo, ¿está utilizando algún marco de trabajo? (antes de que alguien diga "use jQuery" ...) – roryf

Respuesta

4

Creo que puedo haberlo resuelto. El siguiente parece que funciona bastante 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

Es posible que desee considerar ejecutar esto de forma asincrónica. Las solicitudes AJAX sincrónicas pueden bloquear la interfaz de usuario del navegador y dar a los usuarios la impresión de que su navegador está bloqueado. –

+0

Esto se ejecutará desde el lado del cliente, no en un servidor, por lo que no estamos demasiado preocupados por el rendimiento. Haga doble clic en un archivo HTML en su escritorio. –

2

Tal vez usted puede leer la propiedad de responseText XmlHttpRequests tener el texto sin formato antes de ser analizado?

Cuestiones relacionadas