【Flex】读取本地XML,然后XML数据转成JSON数据
干了一年H5,最近被要求写编辑器,Electron等级还不够,写不了,只有重新拿起as3,用flex,最近写到数据表编辑模块,有这部分功能,基本完成 。
package utils
{
/**
* 模块功能:把xml格式的数据 转换成 json格式的数据
* 创建时间:2016-11-26 下午3:33:20
* @author pengxiang
*
*/
public final class ConverXMLToJSON
{
public function ConverXMLToJSON()
{
}
/**
* 函数功能:直接 把XML格式数据 转换成 JSON格式的字符串数据(不添加任何特殊处理,直接输出);
* @param $str
* @return
*
*/
private static function converXMLToJSON(xml:XML):String
{
//整理xml字符串为json
// $str = removeXMLNameSpace($str); //移除xml中的命名空间
// var xml:XML = XML($str);
var obj:Object = converXMLToObject(xml);
var str:String = JSON.stringify(obj);
return str;
}
/**
* 函数功能:把Object格式数据 转换成 JSON格式的字符串数据;
* @param xmlObj
* @return String(JSON格式的String)
*
*/
public static function converObjectToJSON(xmlObj:Object):String
{
//stringify(value:Object, replacer:* = null, space:* = null):String
//[静态] 返回 JSON 格式的字符串,用于表示 ActionScript 值。
var str:String = JSON.stringify(xmlObj);
return str;
}
/**
* 函数功能:把XML格式数据 转换成 Object格式数据;
* @param xml
* @return Object
*
*/
public static function converXMLToObject(xml:XML):Object
{
var obj:Object = new Object();
var ls:XMLList = xml.children();
var atts:XMLList = xml.attributes();
for each (var att:XML in atts){
obj[att.name().toString()]= att.toString();
}
if(ls.length() > 0){
for each(var node:XML in ls){
var objsub:Object = converXMLToObject(node);
var tmp:Object = obj[node.name()];
if(tmp==null){
obj[node.name()]=objsub;
}else if(tmp is Array){
(tmp as Array).push(objsub);
}
else{
obj[node.name()]=new Array(tmp,objsub);
}
}
}
return obj;
}
/**
* 函数功能:去除XML中的命名空间
* @param $str
* @return String
*
*/
public static function removeXMLNameSpace($str:String):String
{
var a:Array = findXMLNameSpace($str);
//去除空间声明
var r:RegExp = /xmlns[^"]+"[^"]+"/g;
$str = $str.replace(r , "");
//去除空间名使用
for (var i:int = 0; i < a.length; i++){
var s:String = a[i] + ":"
r = new RegExp(s , "g");
$str = $str.replace(r , "");
}
return $str;
}
/**
* 函数功能:查找XML中的命名空间
* @param $str
* @return Array
*
*/
public static function findXMLNameSpace($str:String):Array
{
var arr:Array = new Array();
var r:RegExp = /xmlns[^"]+"[^"]+"/g;
var a:Array = $str.match(r);
r = /xmlns:[^=]+=/g;
for each (var s:String in a){
var a1:Array = s.match(r);
if(a1 && a1.length){
s = a1[0];
s = s.replace("xmlns:" ,"")
s = s.replace("=","");
arr.push(s);
}
}
return arr;
}
}
}
【Flex】读取本地XML,然后XML数据转成JSON数据的更多相关文章
- 利用python将excel数据解析成json格式
利用python将excel数据解析成json格式 转成json方便项目中用post请求推送数据自定义数据,也方便测试: import xlrdimport jsonimport requests d ...
- 用ajax获取后台数据,返回json数据,怎么在前台使用?
用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ...
- jQuery操作列表数据转成Json再输出为html dom树
jQuery 把列表数据转成Json再输出为如下 dom树 <div id="menu" class="lv1"> <ul class=&qu ...
- js如何把字符串转换成json数据的方法
js如何把字符串转换成json数据的方法 function strtojson(str){ var json = eval('(' + str + ')'); return json; } 方法二 f ...
- C# DataTable 转换成JSON数据
原文:C# DataTable 转换成JSON数据 using System; using System.Collections.Generic; using System.Data; using S ...
- Jquery Ajax和getJSON获取后台普通Json数据和层级Json数据解析
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 将字典或者数组转换成JSON数据或者字符串
将字典或者数组转换成JSON数据或者字符串 源码: NSDictionary+JSON.h 与 NSDictionary+JSON.m // // NSDictionary+JSON.h // Cat ...
- Java将其他数据类型转换成JSON字符串格式
Student.java package com.demo.servlet; import java.util.List; import java.util.Map; public class Stu ...
- java中将数组、对象、Map、List转换成JSON数据
如果要将数组.对象.Map.List转换成JSON数据,那我们需要一些jar包: json-lib-2.4-jdk15.jar ezmorph-1.0.6.jar commons-logging.ja ...
随机推荐
- 【中文分词】结构化感知器SP
结构化感知器(Structured Perceptron, SP)是由Collins [1]在EMNLP'02上提出来的,用于解决序列标注的问题:中文分词工具THULAC.LTP所采用的理论模型便是基 ...
- Odd Numbers of Divisors
给出一个正奇数K,两个正整数low,high. 有多少整数属于[low, high],且包含K个因子. 数据 C(0 < C < 1e5),测试样例数. (1 < K < 10 ...
- SCP实现无需密码传输文件
SCP概述 Linux为我们提供了两个用于文件copy的命令,一个是cp,一个是scp,但是他们略有不同 CP ----- 主要是用于在同一台电脑上,在不同的目录之间来回copy文件 SCP --- ...
- devexpress设置皮肤、字体以及折叠菜单、伸缩Panel的实现
1.为了体现系统的个性化,越来越多的系统增加了换肤功能.这里例举一个devexpress实现换肤的案例,效果图对比: 第二张图片中更换了皮肤与字体. 2.皮肤数据源绑定代码: //循环添加皮肤名称 f ...
- python2.6.6安装MySQL-python模块正确方法
Centos6.5 x64 系统python2.6.6安装MySQL-python模块 一.安装前准备 操作系统:centos6.5 x64 ·安装python和python开发工具 python p ...
- markdown中常见的转义字符
markdown中的转义字符 字符 转义后字符 & & " " > > < < 不断空格 \ \\ ` \` * \* _ \_ {} ...
- 【整理】图解隐马尔可夫模型(HMM)
写在前面 最近在写论文过程中,研究了一些关于概率统计的算法,也从网上收集了不少资料,在此整理一下与各位朋友分享. 隐马尔可夫模型,简称HMM(Hidden Markov Model), 是一种基于概率 ...
- Oracle 一些简单操作
登录oracle 以root用户切换到oracle数据库用户:su - oracle 输入sqlplus /nolog 不连接任何数据库 conn /as sysdba 用sysdba登录 start ...
- appium初学者,使用之检查appium环境报错Could not detect Mac OS X Version from sw_vers output: '10.12.1’,
这个问题存在的原因就是appium不兼容最新的mac10.12版本. 由于10.12是最新mac版本,appium1.5.3并未提供支持,所以: 在终端输入grep -rl "Could n ...
- 配置Server Side TAF
实验环境:Oracle 11.2.0.4 RAC 参考MOS文档: How To Configure Server Side Transparent Application Failover (文档 ...