我想将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文件但不适用于导入的文件。是否有任何灵魂或是对动作的限制?
非常感谢!
问候 迈克尔
答案 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后执行。