将xml导入xml并使用actionscript 3读取它

时间:2013-07-05 11:23:25

标签: xml actionscript-3 flash import

我想将xml导入xml并使用ActionScript 3读取它。 可以导入单个导入的xml-File,但是按照我想要的方式使用它有一个很大的问题。

所以我的第一个xml-File看起来就是这样:

<!DOCTYPE doc [
<!ENTITY bonuses SYSTEM "bonuses.xml">
]>    
<mission>
            ...
            <wealth money="1000" />
            <bonuses>bonus</bonuses>
            <bonuses>
                <first>&bonuses;</first>
                <second>&bonuses;</second>
            </bonuses>
        </mission>

我的第二个文件就是这样:

<?xml version="1.0" encoding="utf-8"?>
<bananas>
    <descr>Banana Description</descr>
    <impact>You gain more gold!</impact>
    <bonus>15</bonus>
</bananas>

我正在尝试使用此功能访问xml文件:

private function xmlLoaded(e:Event):void 
{
    _xml = new XML(e.target.data);
    trace("XML LOADER: XML LOADED CORRECTLY");
// Correct Output: Bonus
        trace("XML LOADER: BONUS 0: " + _xml.mission[0].bonuses[0]); 
// Incorrect Output: Nothing!
    trace("XML LOADER: BONUS 1: " + _xml.mission[0].bonuses[1].first.descr);
    _stage.dispatchEvent(new Event("completed"));
}

就像我说的,这适用于第一个加载的xml文件但不适用于导入的文件。是否有任何灵魂或是对动作的限制?

非常感谢!

问候 迈克尔

2 个答案:

答案 0 :(得分:1)

首先,请勿使用XML,请使用JSON。 Actionscript 3有一个本机JSON解析器,它比默认的XML解析器更快。 JSON支持数组,它更容易阅读,XML中相同数据的大小为50%到66%。 Actionscript 3将JSON字符串转换为Object字符,其属性可以省去_xml.mission[0].bonuses[1].first.descr之类的内容。

切换到JSON后,像你这样的问题就会飞离蝴蝶的背面闪烁,闪烁

如果您必须使用XML,那么请自己动手制作一个XML to Object转换器,这是您可以轻松调试的。将属性转换为属性,将子节点转换为包含所述子节点的数组等。

答案 1 :(得分:0)

嗯,你的代码中有许多奇怪的东西。

1)您是否将两个XML加载到同一个对象_xml中?每个XML都应该有一个不同的对象。当您执行以下代码时,您将删除_xml内的内容并添加新内容。

_xml = new XML(e.target.data);

2)当然你的第二个跟踪永远不会工作,即使你有2个XML对象,因为它没有正确使用节点......它应该只是这个。

trace(_xml.descr);

如果您需要将2个XML合并到一个XMl对象中,则需要在加载两个XML后执行