AS3 - 将XML格式的数据解析成Object类型
作者:hangge | 2015-02-28 11:33
在Flex/Flash开发中,有时需要将xml类型的数据转换成Object类型来使用。
下面是我封装的一个转换类,能将XML格式数据解析转换成Object对象(XML的子元素也会被递归解析),对于XMLList格式数据则会转换成ArrayCollection(内部元素为Object)
使用方法:
package com.hangge.util
{
import mx.collections.ArrayCollection;
public class XMLUtils
{
/**
* 将XML格式的数据解析成Object类型
* (XML的子元素也会递归解析)
*/
public static function parseXMLData(xml:XML):Object{
if(xml == null){
return null;
}
var result:Object = {};
result["$Children$"] = new ArrayCollection();
//解析标签名
result["$NodeName$"] = xml.localName().toString();
//解析属性
var attNamesList:XMLList = xml.@*;
var length:int = attNamesList.length();
for (var i:int = 0; i < length; i++)
{
var attName:String = attNamesList[i].name().toString();
var attValue:String = attNamesList[i].toString();
result[attName] = attValue;
}
//解析子元素
for each(var childXML:XML in xml.children()){
var child:Object = parseXMLData(childXML);
(result["$Children$"] as ArrayCollection).addItem(child);
}
return result;
}
/**
* 将XMLList格式的数据解析成Object类型
* (XML的子元素也会递归解析)
*/
public static function parseXMLListData(xmlList:XMLList):ArrayCollection{
if(xmlList == null){
return null;
}
var result:ArrayCollection = new ArrayCollection();;
//解析子元素
for each(var childXML:XML in xmlList){
var child:Object = parseXMLData(childXML);
result.addItem(child);
}
return result;
}
}
}
var xml:XML = <data>
<row id="1" name="李四" age="14"/>
<row id="2" name="王五" age="16"/>
<row id="3" name="郑六" age="16"/>
</data>
var data1:Object= parseXMLData(xml);
var data2:ArrayCollection = parseXMLListData(xml.children());
全部评论(0)