flex xml和arraycollection相互转换

绝地灬酷狼 2022-08-09 09:40 235阅读 0赞

1、arraycollection转化为xml,代码如下:

  1. //动态生成树形结构 public static function flatArrayToXML(arr:Object,rootname:String=null,nodename:String=null, outputString:Boolean=false):Object\{ if (arr is Array)\{ \}else if ( arr is ArrayCollection)\{ arr= ArrayCollection(arr).source; \}else if (arr == null)\{ return null; \} if (rootname==null) rootname="root"; var xmlstr:String="<"+rootname+" "+"label='套餐项目'>"; var xmlList:XMLList=new XMLList(); var alength:int=arr.length; if (alength > 0) \{ for (var i:int=0; i < alength; i++) \{ xmlstr+=objToSimpXML(arr\[i\].name,0,nodename,true); \} xmlstr +="</"+nodename+">"; \} \} \} xmlstr+="</"+rootname+">"; trace(xmlstr); var xmldoc:XMLDocument=new XMLDocument(xmlstr); if (outputString==true) return xmldoc==null ? "": xmldoc.toString(); var xml:XML=new XML(xmldoc); return xml; \} //将对象转换为简单xml.<node property1='value1' property2='value2'/>这种形式 //obj转换源对象,仅支持简单对象,如果对象的属性也是一个对象则不进入递归, //nodename可以自定义节点名称, 默认是"node" //是否输出为字符串, 默认转换为xml, 如果为true则将xml变为字符串 //return 值类型根据outputString 来决定, 可能是XML,可能是String public static function objToSimpXML(ri\_name:String,nodeorchild:int, nodename:String=null, outputString:Boolean=false):String\{ if(ri\_name==null) return null; if (nodename==null)nodename="node";//节点名字 var str:String="<"+nodename; str+=" label='"+filterXMLString(ri\_name)+"'";节点中属性的名字 nodeorchild == 1?str+="/>":str+=">"; // var xmldoc:XMLDocument=new XMLDocument(str); // if (outputString==true) return xmldoc==null ? "": xmldoc.toString(); // var xml:XML=new XML(xmldoc); return str; \} //过滤xmlstring, 一些不安全字符需要转义, 比如 单双引号, 左右单箭头等 public static function filterXMLString(str:String):String \{ if (str ==null) return ""; str=str.replace("&", "&");//顺序不要改,这个必须是第一个转换 str=str.replace(">", ">"); str=str.replace("<", "<"); str=str.replace("'", "'"); str=str.replace("/"", ""); return str; \}

在上面的代码中,只要将arraycollection数据源传入到flatArrayToXML方法就行了,如果要增加节点中的属性,只要在 str+=” label=’”+filterXMLString(ri_name)+”‘“;的label 前面增加你想要的的属性名就行了,上面的“套餐项目”是顶级根节点。

在这里要注意的是,比如说你的客户端组件时tree,那么你用这个方法来生成xml就很麻烦了,这个方法适用于比如你只有1个或者2个子节点的情况,如果有多个节点或者是传过来的数据量大的时候,建议在java后台使用递归方法来生成xml。

下面还有个简单的arraycollection转化成xml的例子:

<?xml version=”1.0” encoding=”utf-8”?>

2、xml转化为arraycollection,代码如下:

主程序代码:

<?xml version=”1.0” encoding=”utf-8”?>

data/book_store.xml:

<?xml version=”1.0” encoding=”utf-8”?> 我的书店 0411-12345678 大连市高新园区新华路60号 Getting Start with Flex 49.9 45.9

发表评论

表情:
评论列表 (有 0 条评论,235人围观)

还没有评论,来说两句吧...

相关阅读