no commit message

This commit is contained in:
niandeng
2020-09-17 18:40:01 +08:00
parent 4382915d09
commit d957abceaa
283 changed files with 86935 additions and 63 deletions
+88
View File
@@ -0,0 +1,88 @@
package ckaction.act {
public class XML2JSON {
private static var _arrays: Array;
public static function parse(node: * ): Object {
var obj: Object = {};
var numOfChilds: int = node.children().length();
for (var i: int = 0; i < numOfChilds; i++) {
var childNode: * = node.children()[i];
var childNodeName: String = childNode.name();
var value: * ;
if (childNode.children().length() == 1 && childNode.children()[0].name() == null) {
if (childNode.attributes().length() > 0) {
value = {
_content: childNode.children()[0].toString()
};
var numOfAttributes: int = childNode.attributes().length();
for (var j: int = 0; j < numOfAttributes; j++) {
value[childNode.attributes()[j].name().toString()] = childNode.attributes()[j];
}
} else {
value = childNode.children()[0].toString();
}
} else {
value = parse(childNode);
}
if (obj[childNodeName]) {
if (getTypeof(obj[childNodeName]) == "array") {
obj[childNodeName].push(value);
} else {
obj[childNodeName] = [obj[childNodeName], value];
}
} else if (isArray(childNodeName)) {
obj[childNodeName] = [value];
} else {
obj[childNodeName] = value;
}
}
numOfAttributes = node.attributes().length();
for (i = 0; i < numOfAttributes; i++) {
obj[node.attributes()[i].name().toString()] = node.attributes()[i];
}
if (numOfChilds == 0) {
if (numOfAttributes == 0) {
obj = "";
} else {
obj._content = "";
}
}
return obj;
}
public static function get arrays(): Array {
if (!_arrays) {
_arrays = [];
}
return _arrays;
}
public static function set arrays(a: Array): void {
_arrays = a;
}
private static function isArray(nodeName: String): Boolean {
var numOfArrays: int = _arrays ? _arrays.length : 0;
for (var i: int = 0; i < numOfArrays; i++) {
if (nodeName == _arrays[i]) {
return true;
}
}
return false;
}
private static function getTypeof(o: * ): String {
if (typeof (o) == "object") {
if (o.length == null) {
return "object";
} else if (typeof (o.length) == "number") {
return "array";
} else {
return "object";
}
} else {
return typeof (o);
}
}
}
}