一直在想如何使用一个方法就能把外部XML文件的数据全部读取金AS中,这样既省事又方便,特别是用AS制作一些网站或者是需要用到小型外部数据的东西的时候……经过蓝色上高手们的指点,这样做其实是不必要的,但加深对E4X标准也不错。
因为水平有限,所以肯定还有不够优化的地方,AS版本3.0:
package {
public class ChangeXML{
public function ChangeXML(){
}
public function readXML(xml:XML):Object {
var returnObj:Object=new Object();
walkXML(returnObj,xml);
function walkXML(obj:Object,xml:XML) {
for each (var subXML:XML in xml.elements()) {
obj[subXML.name()]=new Object();
writeObj(obj[subXML.name()],subXML);
walkXML(obj[subXML.name()],subXML);
}
}
function writeObj(obj:Object,xml:XML) {
for each (var attribute:XML in xml.attributes()) {
var dename:String=String(attribute.name())
obj[dename]=attribute.toString();
}
}
return returnObj;
}
}
}
目前不足的地方为没有读取文本节点内容的功能,只能读取元素节点中的属性。所以还要继续改进,直到功能完善为止。
因为水平有限,所以肯定还有不够优化的地方,AS版本3.0:
package {
public class ChangeXML{
public function ChangeXML(){
}
public function readXML(xml:XML):Object {
var returnObj:Object=new Object();
walkXML(returnObj,xml);
function walkXML(obj:Object,xml:XML) {
for each (var subXML:XML in xml.elements()) {
obj[subXML.name()]=new Object();
writeObj(obj[subXML.name()],subXML);
walkXML(obj[subXML.name()],subXML);
}
}
function writeObj(obj:Object,xml:XML) {
for each (var attribute:XML in xml.attributes()) {
var dename:String=String(attribute.name())
obj[dename]=attribute.toString();
}
}
return returnObj;
}
}
}
目前不足的地方为没有读取文本节点内容的功能,只能读取元素节点中的属性。所以还要继续改进,直到功能完善为止。