【Flex】读取本地JSON,然后JSON数据转成XML数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package utils
{
import flash.xml.XMLDocument;
import flash.xml.XMLNode;

import mx.rpc.xml.SimpleXMLEncoder;

/**
* 模块功能:把json格式的数据 转换成 xml格式的数据
* 创建时间:2016-11-26 下午3:33:20
* @author pengxiang
*
*/
public final class ConverJSONToXML
{
public function ConverJSONToXML()
{

}

/**
* 函数功能:把Object格式数据 转换成 XML格式数据;(方法1 可以用,完全灵活,但是对于本项目有BUG,作为下面优化的参考)
* @param obj Object格式数据
* @param rootNodeName XML根节点名称
* @return XML
*
*/
public static function converObjectToXML1(obj:Object,rootNodeName:String):XML {
var qName:QName = new QName(rootNodeName);
var xmlDocument:XMLDocument = new XMLDocument();
var simpleXMLEncoder:SimpleXMLEncoder = new SimpleXMLEncoder(xmlDocument);
var xmlNode:XMLNode = simpleXMLEncoder.encodeValue(obj, qName, xmlDocument);
var xml:XML = new XML(xmlDocument.toString());
// trace(xml.toXMLString());
return xml;
}

/**
* 函数功能:把Object格式数据 转换成 XML格式数据;(方法2 不可以用,半灵活,有BUG,作为下面优化的参考)
* @param obj Object格式数据
* @param nodeParentName XML根节点名称
* @return XML
*
*/
public static function converObjectToXML2(obj:Object,nodeParentName:String):XML
{
var nodeParent:XML = <{nodeParentName}/>;
for(var item:Object in obj){
var node:XML = new XML(<{item}></{item}>);
if (item == "arr"){
var arr :Array = String(obj[item]).split(",");
for (var i:int=0;i<arr.length;i++){
node.appendChild(new XML(<{i}>{arr[i]}</{i}>));
}
}else if (item == "Item"){
converObjectToXML2(obj[item], node);
}else{
node = new XML(<{item}>{obj[item]}</{item}>);
}
nodeParent.appendChild(node);
}

trace(nodeParent.toXMLString());
return nodeParent;
}

/**
* 函数功能:把Object格式数据 转换成 XML格式数据;(方法3 可以用,半写死半灵活的方法,针对本项目设定的json格式,无BUG )
* @param itemObj Object格式数据
* @param rootNodeName XML根节点名称
* @param itemNodeName XML子节点名称
* @return XML
*
*/
public static function converObjectToXML(itemObj:Object,rootNodeName:String,itemNodeName:String):XML
{
// var rootNode:XML = <root/>;
// for(var i:int=0;i<itemObj.length;i++)
// {
// var obj:Object = itemObj[i];
// var itemNode:XML = <Item/>;
// for(var str:String in obj)
// {
// itemNode["@"+str] = obj[str];
// }
// rootNode.appendChild(itemNode);
// }

var rootNode:XML = <{rootNodeName}/>;
for(var i:String in itemObj)
{
var obj:Object = itemObj[i];
var itemNode:XML = <{itemNodeName}/>;
for(var str:String in obj)
{
itemNode["@"+str] = obj[str];
}
rootNode.appendChild(itemNode);
}

return rootNode;
}

public static function objectToXml(obj:Object, root:*):void
{
for(var str:String in obj)
{
root["@"+str] = obj[str];
}
}

/**
* 返回XML文件字符串
* @param value
* @return
*
*/
public static function toXMLFileString(value:XML):String
{
return '<?xml version="1.0" encoding="utf-8"?>\n' + value.toXMLString();
}
}
}
Donate
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2022 Peng Xiang
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信