Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как Парсить .xml (http://www.flasher.ru/forum/showthread.php?t=169301)

areostar 02.10.2011 15:21

Как Парсить .xml
 
Имеется такой вот xml документ:

Код:

<?xml version="1.0" encoding="UTF-8"?>
<collection_menu>
<category>Главная</category>
<category>Торговля</category>
<item>п.1</item>
<item>п.2</item>
<category>Услуги</category>
<item>п.1</item>
<item>п.2</item>
</collection_menu>

Как его просто считать я знаю! а вот как вынуть от туда подпункты(item) из определённой категории?

NikolyA 02.10.2011 15:25

Цитата:

Как его просто считать я знаю
что ты подразумеваешь под считывать? я так понимаю если ты считываешь его то ты уже его парсишь

TWETTI 02.10.2011 16:39

Получит содержимое всех тэгов item для вашего xml файла можно вот так:

Код AS3:

var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, onLoadedXML);
urlLoader.load(new URLRequest("your_xml_file.xml"));
 
function onLoadedXML(event:Event):void
{
    var xml:XML = new XML(event.target.data);
    var len:int = xml.item.length();
    for (var i:int = 0; i < len; i++)
    {
        trace(xml.item[i]);
    }
}

Структура вашего XML файла не правильная. Вот так будет правильно:

Код AS3:

<?xml version="1.0" encoding="UTF-8"?>
<collection_menu>
    <category name="Главная"/>
    <category name="Торговля">
        <item>п.1</item>
        <item>п.2</item>
    </category>
    <category name="Услуги">
        <item>п.1</item>
        <item>п.2</item>
    </category>
</collection_menu>

И тогда код будет таким:
Код AS3:

var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, onLoadedXML);
urlLoader.load(new URLRequest("your_xml_file.xml"));
 
function onLoadedXML(event:Event):void
{
    var xml:XML = new XML(event.target.data);
    var numOfCategories:int = xml.category.length();
    var numOfItems:int;
 
    for (var i:int = 0; i < numOfCategories; i++)
    {
        trace("Элементы категории:", xml.category[i].@name);
        numOfItems = xml.category[i].item.length();
        for (var j:int = 0; j < numOfItems; j++)
        {
            trace(xml.category[i].item[j]);
        }
    }
}



Часовой пояс GMT +4, время: 12:14.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.