Чтение XML файлов c jQuery
Дата публикации: 27.08.2010
Задача
Прочитать xml-файл находящийся на сервере.
Теория
Javascript — язык для создания динамических сценариев на клиентской стороне. Т.е. напрямую работать с файлами, находящимися на сервере (да и на компьютере пользователя) он не может. Обычно для таких целей используются серверные языки (php, asp т.п.). Но бывают ситуации, когда нужно (удобней, проще) прочитать файл с помощью javascript, не прибегая к помощи серверных скриптов.
Допустим на сервере имеется файл data.xml, содержимое которого нужно прочитать и вставить в HTML страницу. data.xml:
<?xml version="1.0" encoding="utf-8"?>
<sites>
<site>
<title>W3C</title>
<url>http://www.w3c.org/</url>
<desc>there are web standards</desc>
</site>
<site>
<title>Mozilla</title>
<url>http://www.mozilla.com/ru/</url>
<desc>here you can download his latest firefox. and generally learn more about him</desc>
</site>
<site>
<title>msdn</title>
<url>http://msdn.microsoft.com/en-us/default.aspx</url>
<desc>information for Web developers from microsoft</desc>
</site>
</sites>
Решение
Для решения этой задачи воспользуемся функцией jQuery.ajax() для асинхронного обращения к данным на сервере:
jQuery(document).ready(function(){
jQuery.ajax({
type: "GET", // метод передачи данных, можно пропустить - по умолчанию и так get
url: "data.xml", // путь к файлу, который будем читать
dataType: "xml", // тип данных, с которыми работаем
success: function(xml) { // переменная названа xml. ее можно назвать как либо по другому
/*
в ответе приходит объект XML.
чтобы добраться до необходимого узла, используем jQuery-поиск по DOM узлам
например, var idItem = jQuery(xml).find("#item1").eq(1).attr("id");
*/
jQuery(xml).find('site').each(
function()
{
var id = jQuery(this).attr('id'),
title = jQuery(this).find('title').text(),
url = jQuery(this).find('url').text(),
desc = jQuery(this).find('desc').text();
jQuery('<div class="items"></div>').html('<h2><a href="'+url+'">'+title+'</a></h2><p>'+desc+'</p>').appendTo('#xml-data');
});
}
});
});
Демо. Проверено:
Заметка
xml-документ должен быть без ошибок иначе не прочитается.
