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

HorusWM 09.10.2012 23:02

Запись узла со множеством свойств в XML
 
Возможно ли записать в XML строку в виде <label name="name" x="0" y="0" /> и как это сделать? Пробовал через XMLList задавать свойства на ходу в виде list.label.@x = object.x, но получаю ошибку, что такой способ не поддерживается.

wvxvw 09.10.2012 23:08

Ну только в цикле, по-другому никак. Вы же хотите, если я правильно понял нескольким узлам назначить новый атрибут?

HorusWM 09.10.2012 23:34

в общем, в конечном итоге я хочу получить вот такую структуру
Код AS3:

<world>
    <triggers>
        <pathpoint id="1" x="1600" y="1714" />
        <pathpoint id="2" x="1614" y="1728" />
    </triggers>
</world>


Wolsh 10.10.2012 00:52

Код AS3:

var xml:XML =  <world><triggers/></world>;
var node1:XML = <pathpoint id="1" x="1600" y="1714" />;
var node2:XML = <pathpoint id="2" x="1614" y="1728" />;
xml.triggers[0].appendChild(node1);
xml.triggers[0].appendChild(node2);
 
trace(xml.toXMLString());

Добавлено через 7 минут
Ну или по кускам собрать, быстрее будет без е4х поиска (возможно)
Код AS3:

var xml:XML =  <world/>;
var triggersNode:XML = <triggers/>;
var node1:XML = <pathpoint id="1" x="1600" y="1714" />;
var node2:XML = <pathpoint id="2" x="1614" y="1728" />;
triggersNode.appendChild(node1);
triggersNode.appendChild(node2);
xml.appendChild(triggersNode);
trace(xml.toXMLString());

Добавлено через 16 минут
атрибуты можно добавлять, была бы ссылка на ноду XML (не XMLList!)
Код AS3:

var xml:XML =  <world><triggers/></world>;
var node1:XML = <pathpoint id="1" x="1600" y="1714" />;
var node2:XML = <pathpoint/>;
xml.triggers.appendChild(node1);
xml.triggers.appendChild(node2);
// немного магии: XML хранит ссылку на ноды, а не просто значение:
node2.@id = "2";
node2.@x = "1614";
node2.@y = "1728";
trace(xml.toXMLString());

Добавлено через 31 минуту
заполнение переменными в цикле можно делать так:
Код AS3:

var triggers:Array = [new Point(1600, 1714), new Point(1614, 1728), new Point(1628, 1742), new Point(1642, 1756)];
var xml:XML =  <world/>;
var triggersNode:XML = <triggers/>;
for (var i:uint = 0; i < triggers.length; i++)
{
        var node:XML = <pathpoint id={i+1} x={triggers[i].x} y={triggers[i].y} />;
        triggersNode.appendChild(node);
}
xml.appendChild(triggersNode);
trace(xml.toXMLString());


HorusWM 10.10.2012 02:19

да, у меня в цикле пробрасывается массив объектов. Благодарю!


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

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