package com.fylib.util
{
/**
* @author Frost.Yen
* @E-mail 871979853@qq.com
* @create 2015-6-18 下午2:06:01
*
*/
public class XML2JSON
{
private static var _arrays:Array;
public function XML2JSON()
{ }
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:XML = node.children()[i] as XML;
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].toString();
}
} 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].toString();
}
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);
}
} public static function printJSON(o:Object):void {
//trace("Debug.printJSON");
//trace(parseJSON(o));
}
public static function parseJSON(o:*, spaces:int = 1):String {
var str:String = "";
if(getTypeof(o) == "object") {
str += "{\n";
for(var i:* in o) {
str += getSpaces(spaces) + i + "=";
if(getTypeof(o[i]) == "object" || getTypeof(o[i]) == "array") {
str += parseJSON(o[i], spaces + 1) + "\n";
} else {
var type:String = getTypeof(o[i]);
if(type == "string") {
str += "\"" + o[i] + "\"\n";
} else if(type == "number") {
str += o[i] + "\n";
}
}
}
str += getSpaces(spaces - 1 < 0 ? 0 : spaces - 1) + "}";
} else if(getTypeof(o) == "array") {
str += "[\n";
var n:int = o.length;
for(i=0; i<n; i++) {
str += getSpaces(spaces) + "[" + i + "]=";
if(getTypeof(o[i]) == "object" || getTypeof(o[i]) == "array") {
str += parseJSON(o[i], spaces + 1) + "\n";
} else {
type = getTypeof(o[i]);
if(type == "string") {
str += "\"" + o[i] + "\"";
} else if(type == "number") {
str += o[i];
}
str += "\n";
}
}
str += getSpaces(spaces - 1 < 0 ? 0 : spaces - 1) + "]";
}
return str;
}
private static function getSpaces(n:int):String {
var str:String = "";
for(var i:int=0; i<n; i++) {
str += " ";
}
return str;
}
// private static function getTypeof(o:*):String {
// return typeof(o) == "object" ? (o.length == null ? "object" : "array") : typeof(o);
// }
}
}

[ActionScript 3.0] AS3 实现XML转换成JSON的更多相关文章

  1. 如何在ASP.NET中用C#将XML转换成JSON

    本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方式来 ...

  2. 如何在ASP.NET中用C#将XML转换成JSON 【转】

      本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方 ...

  3. C#将XML转换成JSON转换XML

    原文:C#将XML转换成JSON转换XML using System; using System.Collections.Generic; using System.Linq; using Syste ...

  4. C#将XML转换成JSON 使用 JavaScript 将 XML 转成 JSON

    如何在ASP.NET中用C#将XML转换成JSON [JavaScript]代码 // Changes XML to JSON function xmlToJson(xml) { // Create ...

  5. 将xml转换成Json,数组,对象格式转换方法

    xml字符串:$simplexml 转换成Json格式:json_encode($simplexml) 转换成数组格式:json_decode(json_encode($simplexml),TRUE ...

  6. [ActionScript 3.0] as3处理xml的功能和遍历节点

    as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式. XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据.将数据加载到 XML 对象 ...

  7. 用C#将XML转换成JSON

    本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方式来 ...

  8. [ActionScript 3.0] AS3 对XML的操作,创建、删除、增加节点方法

    package { import flash.display.Sprite; /** * @author:Frost.Yen * @E-mail:871979853@qq.com * @create: ...

  9. python将xml转换成json数据

    # -*- coding: utf-8 -*- import requests import xmltodict import json def get_response(request_url): ...

随机推荐

  1. ASP.NET MVC中的拦截器

    在ASP.NET MVC中,有三种拦截器:Action拦截器.Result拦截器和Exception拦截器, 所谓的拦截器也没有什么的,只是写一个类,继承另一个类和一个接口,顺便实现接口里面的方法而以 ...

  2. CentOs6.5中安装和配置vsftp

    一.vsftp安装篇 复制代码代码如下: # 安装vsftpdyum -y install vsftpd# 启动service vsftpd start# 开启启动chkconfig vsftpd o ...

  3. 二十种实战调优MySQL性能优化的经验

    二十种实战调优MySQL性能优化的经验 发布时间:2012 年 2 月 15 日 发布者: OurMySQL 来源:web大本营   才被阅读:3,354 次    消灭0评论     本文将为大家介 ...

  4. eclipse项目持续报红解决

    1.tomcat 同步,点击publish: 2.clear项目 3.项目报红,Maven --->UpdateProject 4.pom.xml需要更新,下载最新jar包,附图:

  5. 怎么利用WinPE恢复系统注册表?

    我们的电脑总是会遇到各种各样的问题,最好用的方式就是电脑重装,重装系统的方式有很多,光盘安装.硬盘安装.U盘安装等.但是碰到电脑系统瘫痪无法启动,甚至连安全模式也进不了的时候,你的光盘.硬盘就没有用处 ...

  6. SIlverlight外包公司【技术展望】— Silverlight5.1.2最新版本发布,Silverlight 的更新从未停止。

    微软发布新版Silverlight 5, 版本号5.1.20913.0 大家可以到微软网站去下载最新版本网址是 http://www.microsoft.com/getsilverlight/get- ...

  7. phpstorm laravel单元测试 配置

    laravel中集成了单元测试工具phpunit可以在项目的根目录下进行使用,命令是:phpunti ./tests/单元测试文件名称.在phpstorm中使用phpunit需要做一些配置,指定com ...

  8. 剑指offer系列33-----把二叉树打印成多行

    [题目]从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 方法一:直接打印 package com.exe7.offer; import java.util.LinkedList; i ...

  9. json换行符的处理

    JS端的: var s = JSON.stringify(str); var ss = s.replace(/\\n/g, "\\n") .replace(/\\'/g, &quo ...

  10. (转) 在Eclipse中进行C/C++开发的配置方法(20140721最新版)

    本文转载自:http://blog.csdn.net/baimafujinji/article/details/38026421 Eclipse 是一个开放源代码的.基于Java的可扩展开发平台.就其 ...