这是我们要读取的xml:
<?xml version="1.0" encoding="utf-8"?>
<map>
<tips>一切都会消失</tips>
<background x_offset="-700" y_offset="500" cols="68" rows="68" cellSize="50"/>
<Tiles>
<tile col="53" row="43"/>
<tile col="53" row="44"/>
<tile col="53" row="45"/>
<tile col="54" row="41"/>
<tile col="54" row="42"/>
<tile col="54" row="43"/>
<tile col="54" row="44"/>
<tile col="55" row="42"/>
</Tiles>
</map>
加载:
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("../bin/map.xml"));
loader.addEventListener(Event.COMPLETE, onCompleteHandler);
基本的读取操作,也是我比较喜欢的读取操作~
private function onCompleteHandler(evt:Event):void {
var xml:XML = new XML((evt.target as URLLoader).data);
trace(xml.tips); //读取节点内容
trace(xml.background.@x_offset); //读取节点某属性
for each (var node:XML in xml.Tiles.tile) //遍历某节点
{
//trace("col:" + node.@col + " row:" + node.@row); //读取元素节点的属性
for each (var kid:XML in node.attributes()) {
trace("属性名:" + kid.name() + " ,值" + kid.toString()); //如果节点属性和数量未知 照样可以读取
}
}
}
如何要构造和保存自己的xml呢?
比如我们要创建上面那个xml
其实就是创建String 只需要按照XML的格式就可以了, 最后就转换成XML,然后保存文件。
PS:这里只给了一个节点的创造代码 其他的自己可以根据需要设计~
public static function toXml():XML
{
var xmlString:String = "";
xmlString += "<map>\n";
//Background
xmlString += BackgroundToXml() + "\n";
//Tiles
//xmlString += TilesToXml();
xmlString += "</map>";
return XML(xmlString);
}
public static function BackgroundToXml():String
{
//XML的信息保存在Model里面管理 当要保存文件的时候 可以获取到最新的数据 Model里面的数据通常是由用户操作视图view来更改的
return "background x_offset='" + Model.Xoffset + "' y_offset='" + Model.Yoffset + "' cols='" + Model.numCols + "' rows='" + Model.numRows + "' cellSize='" + Model.cellSize + "' />";
}
保存XML的时候 调用toXML() 把Model里面的数据写入XML 这样就完成了数据即时保存
var file:FileReference = new FileReference();
var xmlss:XML = GlobalData.toXml();
file.save(xmldata, "data.xml");