PDA

Просмотр полной версии : Как Парсить .xml


areostar
02.10.2011, 15:21
Имеется такой вот 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 файла можно вот так:

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 файла не правильная. Вот так будет правильно:

<?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>

И тогда код будет таким:
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]);
}
}
}