|
|
|
|||||
Регистрация: May 2006
Сообщений: 48
|
парсинг xml :D
Есть XML такого вида:
Можете привести пример парсинга дочерних узлов. Прочитал только что статью Дембицкого, но на практике пока ничего не получилось, в поиске нашел примеры с братскими узлами и то кривовато оформленными, может я плохо ищу? |
|
|||||
Регистрация: May 2006
Сообщений: 48
|
получить все значения айтимов name и info во flash.
|
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
var xml:XML = new XML ('<?xml version="1.0" encoding="utf-8" ?><Config> <Head>Основной текст</Head><TableHeadline><Name>имя</Name><Info>инфо</Info></TableHeadline><Objects><Item><Name>имя1</Name><Info>инфо1</Info></Item><Item><Name>имя2</Name><Info>инфо2</Info></Item></Objects></Config>'); xml.ignoreWhite = true; function parse (node:XMLNode) { var name:String = node.nodeName.toLowerCase (); if (name == "name" || name == "info") { trace (node.nodeName + ":" + node.firstChild.nodeValue); } if (node.hasChildNodes () || node.childNodes.length != 0) { var j:Number = 0; while (node.childNodes[j]) { parse (node.childNodes[j++]); } } } parse (xml); |
|
|||||
Регистрация: Sep 2010
Сообщений: 16
|
у меня уже голова кругом идет от этого парсинга. Нигде толком ниче не могу найти. Итого имеется загружаемый descr.xml:
<?xml version="1.0" encoding="unicode"?> <gallery> <picture file="001_SummerCamp2006/P1010801.JPG" name="1"/> <picture file="001_SummerCamp2006/P1010804.JPG" name="2"/> <picture file="001_SummerCamp2006/P1010823.JPG" name="3"/> <picture file="001_SummerCamp2006/P1010860.JPG" name="4"/> <picture file="001_SummerCamp2006/P1010876.JPG" name="5"/> </gallery> Начало такое: Что конкретно делает функция parseXML если на пальцах разьяснить?? Последний раз редактировалось regman; 11.01.2011 в 17:14. |
|
|||||
Модрон-ветеринар
|
Вот вам решение для вашего конфига, если поля находятся на _root и именуются Display1, Display2 ... :
var xmlData:XML = new XML(); xmlData.ignoreWhite = true; xmlData.onLoad = loadXML; xmlData.load('descr.xml'); function loadXML (success:Boolean) { if (success) { var node:XMLNode = this.firstChild ; var total:Number = node.childNodes.length ; for( i = 0; i < total; i++) { var fName:String = node.childNodes[i].attributes['name']; trace(fName); //выведет 1, 2, 3, 4, 5 _root['Display' + i].text = fName; } } }
__________________
Идите первым! Последний раз редактировалось mooncar; 11.01.2011 в 17:28. |
|
|||||
Регистрация: Sep 2010
Сообщений: 16
|
Спасибо за пример. Вроде все понял. Только вот матчасть у меня хромает.
Вычитал насчет XML.onLoad() : К моменту вызова события onLoad полученные данные уже разобраны методом parseXML и помещены в тело экземпляра XML. Тоесть походу parseXML автоматом парсит файл?? Не нужно его вызывать потом нигде?? И в какой момент именно вызывается этот parseXML?? В момент вызова load? И еще вопрос походу матчасти. Почему вызов функции loadXML идет раньше ее объявления?? Я просто пробую создать свою первую галерею на сайте без слайдшоу. Есть контейнер, с двумя кнопками (вперед, назад) и текстовое поле для вывода информации и фото (Display). Сейчас уже все работает, только не мог вывести описание файла. Последний раз редактировалось regman; 11.01.2011 в 17:41. |
|
|||||
Модрон-ветеринар
|
По поводу второго - вызов функции не идет раньше ее определения.
Все действия кода идут последовательно, все функции к тому времени уже определены (которые записаны так, как в моем примере). Просто для удобства я обычно все функции записываю внизу. А насчет метода parseXML - я им не пользуюсь, точно не скажу. Насколько я понимаю, метод предназначен для превращения строки в объект XML. И еще. Вот цитата из переведенного хелпа по AS2: Цитата:
__________________
Идите первым! Последний раз редактировалось mooncar; 11.01.2011 в 17:51. |
|
|||||
Регистрация: Sep 2010
Сообщений: 16
|
У меня стоит задача вывести описание файла name на изображение, загружаемое по пути file, взятому из загруженного файла xml при запуске флэша. А также при каждом переходе к следующей/предыдущей фотографии.
Завтра с утра со свежей головой попробую через ваш пример сделать требуемое... |
|
|||||
Модрон-ветеринар
|
Совет. Заносите при парсинге полученные данные в заранее объявленный массив (или массивы), чтобы потом можно из было оттуда брать при смене слайда.
__________________
Идите первым! |
Часовой пояс GMT +4, время: 12:56. |
|
« Предыдущая тема | Следующая тема » |
|
|