Форум 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=124188)

marat_sa 23.04.2009 10:41

Ломается массив, созданный из большой XML
 
Добрый день, гружу внешний XML файл с субтитрами, парсю его и загоняю в массив титров. Вот когда их становиться много (размер xml файла превышает 160 кБ), то что-то ломается и выдается всегда последний субтитр. Есть ли ограничения на:
- размер XML файла?
- длину массива?

BeDLiNt 23.04.2009 11:19

Покажи как принимаешь, парсишь данные. Ограничений вроде нет ни каких на размер. По крайней мере метровый файл вполне работает.

IDimitry 23.04.2009 13:55

Вобще-то иногда наблюдается проблема с парсингом файла. Существует 2 типа парсинга: DOM и SAX. В первом случае вся структура сразу загоняется и по истечении какого-то времени получаем парсированную структуру. Насколько понимаю, стандартные средства в AS работают именно так. Если наблюдаются проблемы с памятью (нехватка), то этот процесс может быть незакончен. По крайней мере, зависимость от памяти есть. Хотя это и маловероятно ... Надо видеть код, конечно.

marat_sa 23.04.2009 14:14

Грузим xml, записываем его в structureXML - XML.
Далее парсим:
Код AS3:

var marksXML:XMLList = new XMLList();
// выделяем блоки с титрами
marksXML = structureXML..subtitle;
 
for ( i:String in marksXML)
{
// Вставляем титры, спец класс Titles с полями текст, время начала показа и конца
        titlesMarkArray.push(new Titles(marksXML[i].@text,convertTimeStringInSeconds(marksXML[i].@beginTime),convertTimeStringInSeconds(marksXML[i].@endTime)));
}
 
//сортируем
titlesMarkArray.sortOn("beginTime", Array.NUMERIC);
 
//вуаля! Ниче не работает, точнее выдается всегда последний титр

А если часть XML закомментировать - то все нормально начинает работать

Вот кусок XML:
Код:

<title>
        <subtitle text="Значит, мы изучаем с вами в этом семестре науку под названием 'математическая статистика'." beginTime="00:00:00.08" endTime="00:00:05.10"/>
        <subtitle text="Значит…" beginTime="00:00:14.21" endTime="00:00:15.19"/>
        <subtitle text="Посмотрите, пожалуйста. Тут есть несколько особенностей, на которые нужно обратить внимание." beginTime="00:00:17.10" endTime="00:00:22.90"/>
...
</title>


BeDLiNt 23.04.2009 14:27

Используйте
Код AS3:

for each (var item:XML in marksXML) {
  titlesMarkArray.push(new Titles(item.@text,convertTimeStringInSeconds(item.@beginTime),convertTimeStringInSeconds(item.@endTime)));
}

А в вашем примере протрейсте значение i. Помоему оно вам выдает совсем не то что вы хотели.

marat_sa 24.04.2009 09:32

i выдает правильное значение, но когда поменял for на for each - заработало, спасибо)))


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

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