Парсим XML средствами jQuery
Наверняка вы уже знаете, как работать с форматом JSON через jQuery. Пришло время познакомиться с тем, как можно распарсить XML файл. Единственное весомое различие заключается в том, что вы можете использовать XML только в пределах домена, в котором происходит AJAX запрос. Для использования сторонних файлов вам понадобится JSONP.
XML
Теперь я приведу пример XML кода. Вы его можете найти в файле books.xml. Внутри вы обнаружите главный элемент (корневой) и его структурированных потомков.
<?xml version="1.0" encoding="utf-8" ?> <RecentBooks> <Book> <Title>My Cool Book Title</Title> <Description>The my cool book is possibly the best cool book in that any developer could use to be a great web designer.</Description> <Date>12/1/2010</Date> </Book> <Book> <Title>Another PHP book</Title> <Description>Learn everything about PHP with 'Another PHP book,' your ultimate guide to the ins and outs of PHP.</Description> <Date>4/1/2010</Date> </Book> <Book> <Title>jQuery Techniques</Title> <Description>jQuery techniques runs you through real life examples of jQuery from beginner to expert</Description> <Date>6/2/2010</Date> </Book> <Book> <Title>MySQL Database Book</Title> <Description>Brush up your knowledge with the best MySQL database book on the market.</Description> <Date>14/2/2010</Date> </Book> </RecentBooks>
JavaScript
Для того чтобы распарсить XML файл, нам надо сделать AJAX запрос.
ВАЖНО. Если вы хотите делать кросдоменные AJAX запросы, то вам следует использовать JSONP
Итак, файл у нас есть. Теперь воспользуемся методом .find(), для того чтобы добраться до нужного нам элемента.
$(document).ready(function () { $.ajax({ type: "GET", url: "books.xml", dataType: "xml", success: xmlParser }); }); function xmlParser(xml) { $('#load').fadeOut(); $(xml).find("Book").each(function () { $(".main").append('<div class="book"><div class="title">' + $(this).find("Title").text() + '</div><div class="description">' + $(this).find("Description").text() + '</div><div class="date">Published ' + $(this).find("Date").text() + '</div></div>'); $(".book").fadeIn(1000); }); }
HTML
Содержимое XML файла будет записано в блоке с классом .main.
<div class="main"> <div align="center" class="loader"><img src="/loader.gif" id="load" width="16" height="11" align="absmiddle"/></div> </div> <div class="clear"></div>