我是actionscript 2.0的新手,我想知道在迭代xml时如何读取xml属性的值。
到目前为止,我可以获取xml元素,但我无法解决此问题。
提前致谢,
布赖恩
答案 0 :(得分:3)
好吧,任何元素节点都有属性attributes
...这只是一个充满信息的匿名对象......
只需someXML.attributes.someAttribute
即可获得所需的价值......
同样,您可以查看我为AS2制作的this little library,将e4x的部分内容带到AS2并简化XML处理......但它并非完全符合生产水平!
格尔茨
back2dos
答案 1 :(得分:0)
嗯,需要你的一些代码来解决这个谜团;否则你会得到一些无聊的链接到sdk文档。但生病了,它是AS3代码,我不知道xml是否有一些来自AS2-> AS3的重大返工。必须说它在AS3中使用xml是一种非常好的体验。
//current level number
public var mCurrentLevelNumber:Number = 0;
//read from file variables:
private var mLoader:URLLoader = new URLLoader();
private var mXML:XML;
//add a listener
mLoader.addEventListener(Event.COMPLETE, OnLoadXML, false, 0, true);
mLoader.load(new URLRequest("../assets/content.xml"));
....
/*
OnLoadXML
Parses the data from the file, loads one level
@e:Event
*/
private function OnLoadXML(e:Event):void{
var loadLevel:Array = new Array();
try{
//convert the text into an XML
mXML = new XML(e.target.data);
//trace("reading from .xml is done, values: ", mXML);
trace(" Name of the level: ", mXML.level[mCurrentLevelNumber].title.text() );
for (var j:int=0; j<mXML.level[mCurrentLevelNumber].tiles.tilerow.length(); j++) {
trace("Row",j,", tiles:", mXML.level[mCurrentLevelNumber].tiles.tilerow[j].text() );
}
//......
//}
}catch (e:TypeError){
trace("Could not parse the XML");
trace(e.message);
}
}
And the xml file structure;
<!-- pretty level arrays... -->
<levels>
<level>
<title>Level 1</title>
<tiles>
<tilerow>1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6 1 1 1 3 1 13</tilerow>
<tilerow>1 0 0 0 0 0 0 0 0 0 0 0 10 12 0 9 0 0 0 0 0 0 0 0 1</tilerow>
<tilerow>1 0 0 0 0 1 0 0 0 0 0 0 10 11 11 11 12 0 6 1 0 0 0 0 1</tilerow>
<tilerow>1 9 1 0 0 1 0 0 0 0 0 0 10 12 0 9 0 0 6 0 0 0 0 0 1</tilerow>
</tiles>
</level>
</levels>