0

我想将 xml 导入 xml 并使用 ActionScript 3 读取它。可以导入单个导入的 xml 文件,但我想以我想要的方式使用它时遇到了一个大问题。

所以我的第一个 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 文件,但不适用于导入。是否有任何灵魂或它是动作脚本的限制?

非常感谢!

问候迈克尔

4

2 回答 2

1

首先,不要使用XML,使用JSON。Actionscript 3 有一个本地JSON解析器,它比默认XML解析器更快。JSON支持数组,更易于阅读,并且XML. Actionscript 3 将JSON字符串转换为Object具有属性的字符串,这样就不需要像_xml.mission[0].bonuses[1].first.descr.

一旦你切换到JSON,像你这样的问题就会在蝴蝶闪烁的背上飞走,闪烁

如果您必须使用 XML,那么让自己或自己成为 XML 到对象的转换器,这是您可以轻松调试的东西。将属性转换为属性,将子节点转换为具有所述子节点的数组等。

于 2013-07-05T12:54:48.210 回答
0

好吧,你的代码中有很多奇怪的东西。

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

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

2) 当然,即使您有 2 个 XML 对象,您的第二个跟踪也永远不会起作用,因为它没有正确使用节点……应该就是这样。

trace(_xml.descr);

如果您需要将 2 个 XML 组合成一个 XML 对象,则需要加载两个 XML 后执行此操作。

于 2013-07-05T17:40:59.053 回答