快速业务通道

用于分析Flash内部XML,并转换成对象的类

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-10


最近写的用于分析Flash内部XML,并转换成对象的类.与大家分享.
我用了多次,可以解析较复杂的XML对象.
代码如下: import mx.events.EventDispatcher;
class XmlToArray
{
private var data : Object, xml : Object;
public var tem_nodes : XML;
function XmlToArray (tn : XML)
{
tem_nodes = tn;
tem_nodes.ignoreWhite = true;
}
function toObject () : Object
{
var data : Object = parse (tem_nodes);
return data;
}
private function parse (node : XMLNode) : Object
{
//var node:XMLNode = tem_nodes;
var value : Object = new Object ();
if (node.childNodes.length != (undefined || null))
{
var nodes : Number = node.childNodes.length;
var type : String = "xml"
} else
{
var temp_array = node;
var nodes : Number = temp_array.length;
var type : String = "array"
}
for (var i = 0; i != nodes; ++ i)
{
if (type == "xml")
{
var name : String = node.childNodes [i].nodeName;
} else
{
var name : String = node [i].nodeName;
}
if (name != null)
{
if (value [name] != undefined)
{
if ( ! (value [name] instanceof Array))
{
value [name] = new Array (value [name]);
}
if (type == "xml")
{
value [name].push (getValue (node.childNodes [i]));
} else
{
value [name].push (getValue (node [i]));
}
} else
{
if (type == "xml")
{
value [name] = getValue (node.childNodes [i]);
} else
{
value [name] = getValue (node [i]);
}
}
} else
{
if (type == "xml")
{
value = getValue (node.childNodes [i]);
} else
{
value = getValue (node [i]);
}

}
}
var attributes : Object = getAttributes (node);
if (attributes != null)
{
if (nodes != 0)
{
if ( ! (value instanceof XMLNode))
{
for (var i in value)
{
attributes [i] = value [i];
}
} else
{
attributes [’_val’] = value.nodeValue;
}
}
return attributes;
}
return value;
}
private function getAttributes (node : XMLNode) : Object
{
var attributes = new Object ();
for (var i in node.attributes)
{
attributes [i] = node.attributes [i];
}
return i != undefined ? attributes : null;
}
private function getValue (node : XMLNode) : Object
{
switch (node.nodeType)
{
case 1 :
return parse (node);
case 3 :
return node.toString ();
}
return null;
}
private function finalize ()
{
delete xml;
}
}
欢迎与我交流
关键词:对象

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号