AS3& XML - 如何在as3中构造xml数据?

时间:2011-12-31 23:13:58

标签: xml actionscript-3

我正在玩游戏中的数据保存.xml文件。我知道如何将xml对象转换为ByteArray并将其写入FileReference。我现在需要知道的是如何从一个空的xml对象(使用var xml:XML = new XML())转到一个完全填充的xml对象。

有人可以告诉我用什么函数来添加节点和值吗?具体来说,我需要知道如何制作几个相同类型的节点。这是最终xml应该是什么样子的样本:

<data>
    <player>
        <money>15831</money>
        <shipType>1</shipType>
        <ship>
            <fuelCur>450</fuelCur>
            <energyCur>160</energyCur>
            <shieldCur>100</shieldCur>
            <armorCur>40</armorCur>
            <structCur>15</structCur>
        </ship>
    </player>
    <currentSystem>3</currentSystem>
    <currentPlanet>3</currentPlanet>
    <date>
        <year>2012</year>
        <month>10</month>
        <day>15</day>
    </date>
    <missionFlag>true</missionFlag>
    <planet id="0">
            <population>0</population>
    </planet>
    <planet id="1">
            <population>29827632</population>
    </planet>
    <planet id="2">
            <population>0</population>
    </planet>
</data>

了解如何删除以及如何更改节点和值可能很有用。

另外,我是否需要从Flash库中导入一些内容才能使用XML执行此操作?我正在使用FlashDevelop,但是当我输入xml.时,FlashDevelop不会像通常那样提出建议。

2 个答案:

答案 0 :(得分:7)

在AS3中编辑XML实际上非常简单且非常基础 - 它是AS3的核心部分。 AS3会在您调用节点时自动添加节点,如下所示:

var xml:XML = <data />;
xml.player.money = 15831;
xml.player.shiptype = 1;
xml.player.ship.fuelCur = 450;

将导致:

<data>
    <player>
        <money>15831</money>
        <shiptype>1</shiptype>
        <ship>
            <fuelCur>450</fuelCur>
        </ship>
    </player>
</data>

然后,要添加同一节点的多个,只需启动所需类型的新XML对象,然后将其附加到您正在处理的XML对象上。或者完全跳过单独的xml对象。根据需要重复多次:

var segment:XML = <planet />;
xml.appendChild(segment); // xml.planet[0]
xml.appendChild(segment); // xml.planet[1]
xml.appendChild(<planet />); // xml.planet[2]
//etc...

然后你可以通过索引为它们添加值。

//Assuming this is the 4th planet you've added...
xml.planet[3].population = 29827632;

答案 1 :(得分:0)

在FlashDevelop中,尝试完全创建单独的XML文件。这将为您提供更好的代码提示。

对于XML,我发现Adobe的基本docs on their XML class有很多有用的示例和工具来创建和使用XML对象。