2009-05-08 10 views
5

Szukam sposobu na załadowanie zawartości pliku XML bezpośrednio do zmiennej JavaScript. Że mam następującą strukturę katalogów:Jak załadować zawartość pliku XML za pomocą JavaScript?

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

W index.html, istnieje <body> tag, którego zawartość powinna zostać zastąpiona zawartością pliku XML. jeśli tak, to plik XML zawiera:

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

Następnie po dynamicznym obciążeniu, HTML byłoby:

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

Moje pytanie brzmi, co funkcja można używać w loader.js załadować zawartość prosto do zmienna? Użyłem XmlHttpRequests i parser XMLDOM ActiveX, ale wszystkie po prostu dają mi strukturalny model danych, który następnie muszę posortować, aby znaleźć moje elementy. Nie potrzebuję parsować czegokolwiek, chcę tylko uzyskać całą zawartość pliku.

Uwaga: Tylko HTML/JavaScript, bez kodu po stronie serwera.

+0

To może być combersome zrobić ze zwykłym starym JavaScript, czy korzystasz z jakichkolwiek frameworków? (zanim ktoś powie "użyj jQuery" ...) – roryf

Odpowiedz

4

Myślę, że mogłem to rozgryźć. Poniższa wydaje się działać całkiem dobrze:

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

Możesz rozważyć uruchomienie tego asynchronicznie. Synchroniczne żądania AJAX mogą blokować interfejs użytkownika przeglądarki, dając użytkownikom wrażenie, że przeglądarka jest zawieszona. –

+0

To będzie działać od strony klienta, ale nie na serwerze, więc nie martwimy się zbytnio wydajnością. Obraz dwukrotnie klikając plik HTML na pulpicie. –

2

Być może można odczytać właściwość responseText XMLHttpRequests mieć zwykły tekst przed parsowania?

Powiązane problemy