Flex中XML格式适配

haowang21 2010-09-17 11:23:18
现在做一个老系统的改造,以前返回的数据格式不支持现有Flex组建的数据绑定,所以需要做一个XML格式的适配,以前老格式

<root>
<node>
<id>1</id>
<name>node1</name>
</node>
<node>
<id>2</id>
<name>node2</name>
</node>
<node>
<id>3</id>
<name>node3</name>
<parentId>1</parentId>
</node>
<node>
<id>4</id>
<name>node4</name>
<parentId>3</parentId>
</node>
<node>
<id>5</id>
<name>node5</name>
<parentId>3</parentId>
</node>
</root>



现在页面需要的数据格式是



<node id="1" name="node1">
<node id="2" name="node2"></node>
<node id="3" name="node3">
<node id="4" name="node4"></node>
<node id="5" name="node5"></node>
</node>
</node>


是递归的

怎么写这样一个XML格式转换的适配器
...全文
217 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
leemiki 2010-09-17
  • 打赏
  • 举报
回复
只要熟悉XML操作,这个实现不难!

代码我就不写,给你个思路

建一个as文件,写一个函数传入参数XML

在函数中对XML进行解析(一般的XML操作),主要是下面这一步

将解析后的结果拼接成新的XML,中间会涉及些逻辑处理
haowang21 2010-09-17
  • 打赏
  • 举报
回复

package com.zsmart.adapter
{
import mx.controls.Alert;

public class StaffOrgResultAdapter
{
public function StaffOrgResultAdapter()
{
}

public static function getResult(staffOrgResult:XML):XMLList
{
var apaterResult:XMLList;
if (staffOrgResult != null)
{
var staffOrgList:XMLList = staffOrgResult.child("RS_AREAS");
trace(staffOrgList.toXMLString());
trace("--------------------------------邪恶的分割线------------------------------");
trace(disXML("1",staffOrgList,null).toXMLString());
}
return apaterResult;
}

private static function disXML(pid:String,staffOrgList:XMLList,adapterStaff:XML):XML
{
if (adapterStaff == null)
{
adapterStaff = <root></root>;
}
for(var i:int=0;i<staffOrgList.length();i++)
{
var staffOrgXML:XML = staffOrgList[i] as XML;
var newStaffOrg:XML = <root/>;
if(pid == staffOrgXML.PARENT_ID)
{
newStaffOrg.setName(staffOrgXML.name());
newStaffOrg.@AREA_ID=staffOrgXML.AREA_ID;
newStaffOrg.@AREA_NAME = staffOrgXML.AREA_NAME;
//newStaffOrg.@PARENT_ID = staffOrgXML.PARENT_ID;
for(var j:int=0;j<staffOrgList.length();j++)
{
var otherstaffOrgXML:XML = staffOrgList[j] as XML;
if(otherstaffOrgXML.PARENT_ID == newStaffOrg.@AREA_ID)
{
var childStaffOrg:XML = disXML(newStaffOrg.@AREA_ID,staffOrgList,otherstaffOrgXML);
newStaffOrg.appendChild(childStaffOrg);
}
}
}
if (newStaffOrg!=<root/>)
{
adapterStaff.appendChild(newStaffOrg);
}
}
return adapterStaff;
}

}
}
passself 2010-09-17
  • 打赏
  • 举报
回复
你的代码贴出来,我们帮你改改
haowang21 2010-09-17
  • 打赏
  • 举报
回复
我测试半天 老是出问题 FLex本身支持引用传递 真麻烦
passself 2010-09-17
  • 打赏
  • 举报
回复
有规律就比较简单了,但是代码需要深思熟虑才可以写出来,虽然只有几行
haowang21 2010-09-17
  • 打赏
  • 举报
回复
能把实现代码贴出来么..
herowach 2010-09-17
  • 打赏
  • 举报
回复
XSLT
flex端和服务端都有API

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧