flex如何读取xml文件(原创)
最近刚做了个“关灯游戏”的小项目。其中需要通过读取.xml的配置文件来初始化游戏的状态。下面就介绍下如何读取xml文件的内容
经过多次尝试,我发现读取xml中的内容有两种方法(当然,这些是对于我的这个配置文件的格式而言的)。我的配置文件的格式是这样的
<Stages>
<Stage>
<Row>00010</Row>
<Row>00111</Row>
<Row>01010</Row>
<Row>11100</Row>
<Row>01000</Row>
</Stage>
....
</Stages>
现在我想读出里面的00010之类的数据。方法有两种:
(1)for(var i:int = 0; i < xml.Stage.length(); i++)
{
arr = new Array();
for(var j:int = 0; j < 5; j++)
{
subArr = new Array();
str = xml.Stage[i].Row[j];//读出"00010"这些元素的值
subArr = getArray(str); //将字符串"00010"转换成数组
arr = arr.concat(subArr);
}
}
(2) for each (var stage in xml.Stage)
{
arr = new Array();
for each(var row in stage.Row)
{
subArr = new Array();
str = row;
subArr = getArray(str);
arr = arr.concat(subArr);
}
stages.push(arr);
}
我个人觉得第二种方法更酷些。我刚开始的第一直觉是使用第一种方法。毕竟使用C++那么久了。比较习惯C++的用法。但是第二种更简洁,更好看。
注意:要使用这两种方法,必须要使xml的格式一样。这样才方便读出。
----David Cai 2009-8-14 午于金山公司
经过多次尝试,我发现读取xml中的内容有两种方法(当然,这些是对于我的这个配置文件的格式而言的)。我的配置文件的格式是这样的
<Stages>
<Stage>
<Row>00010</Row>
<Row>00111</Row>
<Row>01010</Row>
<Row>11100</Row>
<Row>01000</Row>
</Stage>
....
</Stages>
现在我想读出里面的00010之类的数据。方法有两种:
(1)for(var i:int = 0; i < xml.Stage.length(); i++)
{
arr = new Array();
for(var j:int = 0; j < 5; j++)
{
subArr = new Array();
str = xml.Stage[i].Row[j];//读出"00010"这些元素的值
subArr = getArray(str); //将字符串"00010"转换成数组
arr = arr.concat(subArr);
}
}
(2) for each (var stage in xml.Stage)
{
arr = new Array();
for each(var row in stage.Row)
{
subArr = new Array();
str = row;
subArr = getArray(str);
arr = arr.concat(subArr);
}
stages.push(arr);
}
我个人觉得第二种方法更酷些。我刚开始的第一直觉是使用第一种方法。毕竟使用C++那么久了。比较习惯C++的用法。但是第二种更简洁,更好看。
注意:要使用这两种方法,必须要使xml的格式一样。这样才方便读出。
----David Cai 2009-8-14 午于金山公司