AS3 XML 转JSON

本文介绍了一种使用递归算法将XML文件转换为JSON格式的方法。通过遍历XML节点及其属性,该方法能够有效地将XML数据结构转化为易于处理的JSON对象。文章提供了具体的ActionScript代码示例。

没有看到现成的,自己用递归算法写了一个,发现json的大小没有小到多少,还把注释和换行都去掉了。还是用xml吧。

 

 private function xmltoObject(xml:XML):Object
  {
   var obj = 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 = xmltoObject(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;
  }
  
  protected function ConvertXMLToJSON():void {
   
   var f:File = File.documentsDirectory.resolvePath("file:///D|/item.xml");
   var fs:FileStream = new FileStream();
   fs.open(f,FileMode.READ);
   fs.position=0;
   var str:String = fs.readUTFBytes(fs.bytesAvailable);
   fs.close();
   
   
   var xml:XML = new XML(str);
   var xmlobj:Object = xmltoObject(xml);
   var js:JSONEncoder = new JSONEncoder(xmlobj);
    
   var strjson:String = js.getString();
 
   var f2:File = File.documentsDirectory.resolvePath("file:///D|/itemjson.json");
   var fs2:FileStream =new FileStream();
   fs2.open(f2, FileMode.WRITE);
   fs2.writeUTFBytes(strjson);
   fs2.close();
   }

 

 

XML(Extensible Markup Language)和JSON(JavaScript Object Notation)都是用于数据交换的格式,但它们在结构和语法上有一些不同。XML是一种基于标签的语言,用于描述数据结构,而JSON则是一种基于文本的格式,更易于人类阅读和编写。 要将XML换为JSON,您需要遵循以下步骤: 1. 解析XML文档:首先,您需要将XML文档解析为可用的数据结构。这通常可以通过使用XML解析器来完成。大多数编程语言都提供了内置的XML解析器库或模块。 2. 提取数据:从XML文档中提取您需要换为JSON的数据。这可能包括标签、属性、文本内容等。 3. 格式化数据:将提取的数据按照JSON的语法格式进行整理。这通常涉及到将标签换为属性,将文本内容换为字符串等。 4. 创建JSON对象:使用整理后的数据创建一个JSON对象。这通常涉及到将数据添加到对象中,并使用适当的键来引用每个元素。 下面是一个简单的示例,说明如何将XML文档换为JSON: 假设您有一个简单的XML文档,其中包含以下内容: ```xml <person> <name>John Doe</name> <age>30</age> <address> <street>123 Main St</street> <city>Anytown</city> <state>CA</state> </address> </person> ``` 您可以使用Python的xml.etree.ElementTree库来解析该XML文档,并使用json库将其换为JSON: ```python import xml.etree.ElementTree as ET import json # 解析XML文档 tree = ET.parse(&#39;person.xml&#39;) root = tree.getroot() # 将XML元素换为属性字典 attributes = {element.tag: element.attrib for element in root} # 将数据换为JSON对象 data = { &#39;name&#39;: attributes[&#39;name&#39;], &#39;age&#39;: attributes[&#39;age&#39;], &#39;address&#39;: { &#39;street&#39;: attributes[&#39;address&#39;][&#39;street&#39;], &#39;city&#39;: attributes[&#39;address&#39;][&#39;city&#39;], &#39;state&#39;: attributes[&#39;address&#39;][&#39;state&#39;] } } # 将数据换为JSON字符串并输出 json_str = json.dumps(data) print(json_str) ``` 这将输出以下JSON字符串: ```json {"name": "John Doe", "age": "30", "address": {"street": "123 Main St", "city": "Anytown", "state": "CA"}} ``` 请注意,这只是一个简单的示例,实际情况可能会更复杂。在换大型或复杂的XML文档时,可能需要使用更高级的工具和技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值