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

Shootin 10.04.2009 14:29

Разделить XML пополам
 
Есть некоторый XML.

Пусть в нем к примеру 10 нод.

Как быстро и изящно, без циклов, получить два XML, являющихся его половинами?

mre 10.04.2009 16:59

А зачем?

GBee 10.04.2009 17:12

xml/2 :о))))

Shootin 10.04.2009 18:49

Цитата:

Сообщение от mre (Сообщение 812325)
А зачем?

От сервака приходит XML, его надо запихнуть в два компонента Tree, в левый и в правый :).

Таково пожелание заказчика, чтоб два дерева было.

mre 10.04.2009 19:32

Ну дак раз xml все равно придется парсить весь, то можно это сделать один раз и в этом же цикле разбить.

GBee 10.04.2009 21:22

И лучше это сделать на серваке.

wvxvw 10.04.2009 23:01

а по какому принципу вы его делить будете?
Код AS3:

var xml:XML = 
<a>
        <b c="0"/>
        <b c="1"/>
        <b c="2"/>
        <b c="3"/>
        <b c="4"/>
        <b c="5"/>
        <b c="6"/>
        <b c="7"/>
        <b c="8"/>
        <b c="9"/>
</a>;
var i:int;
var lnt:int = xml.*.length() / 2;
var part0:XMLList = xml.*.(i++ < lnt);
i = 0;
var part1:XMLList = xml.*.(i++ >= lnt);
trace(part0.toXMLString());
trace("--- part 2 ---");
trace(part1.toXMLString());

Ну только я надеюсь вы понимаете, что, например, нечетные числа пополам не делятся...

Shootin 10.04.2009 23:11

Цитата:

Сообщение от mre (Сообщение 812378)
Ну дак раз xml все равно придется парсить весь, то можно это сделать один раз и в этом же цикле разбить.

я не собираюсь его парсить..)

Mur4ik 11.04.2009 03:29

Парсить все равно придется.... :)
Т.к после разбивки "пополам" могут образоваться незакрытые/неоткрытые узлы, соответственно структура xml уже воспримется как некорректная и компоненты такие куски не "схавают". Поэтому нужно не просто разбить примерно на двое, а еще и сделать это корректно, чтоб обе части являли собой полноценные xml (почти как в примере wvxvw)

CEBEP 11.04.2009 03:43

Ну получите из главного нода - хмлЛист и разделите на 2 части.

Цитата:

Как быстро и изящно, без циклов, получить два XML, являющихся его половинами?
Осчучение, что речь не про е4х а про старый ХМЛДокумент идёт...

Obi 11.04.2009 14:17

<joke>
Код:

var xml:XML =
<a>
        <b c="0"/>
        <b c="1"/>
        <b c="2"/>
        <b c="3"/>
        <b c="4"/>
        <b c="5"/>
        <b c="6"/>
        <b c="7"/>
        <b c="8"/>
        <b c="9"/>
</a>;
var str:String = xml.toString();
var str2:String = str.substr(0, str.length / 2);
str = str.substr(str.length / 2, str.length);

</joke>
ггг


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

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