轉換XML到Object----XMLToObject

這是WebService的解析響應數據類,負責轉換xml到object,解析的結果可以按照訪問object/array的方式訪問.
程序代碼
//讀取rss的例子
[url=http://www.roading.net/as3/readfeed.swf]http://www.roading.net/as3/readfeed.swf[/url]
import net.roading.*;
import net.roading.data.*;
import net.roading.skin.*;
import net.roading.component.*;
SkinManager.load("FlexSkin.swf",loaded);
function loaded()
{
 var titlel = new Label(0,5,550,20,"blog title... wait loaded");
 addChild(titlel);
 //
 var ll = new Label(0,378,50,20,"feed url:");
 addChild(ll);
 //
 var futi = new TextInput(50,378,400,20);
 var lbtn = new Button(510,378,30,20,"load");
 addChild(futi);
 addChild(lbtn);
 //
 lbtn.addEventListener("click",loadClick);
 //
 function loadClick(e)
 {
  var fl:FileLoader = new FileLoader();
  fl.loadXml(futi.text);
  fl.onLoad = function(xml)
  {
   //trace(xml);
   var o = XMLToObject.to(xml);
   //
   //trace(o.rss.channel.item.length);
   titlel.text = o.rss.channel.title+" --- "+o.rss.channel.description;
   //
   ta.text = o.rss.channel.item[0].description;
   //
   list.dataProvider = o.rss.channel.item;
  }
 }
 //
 var list = new ListBox();
 list.move(2,30);
 list.size(200,345);
 list.labelField = "title";
 addChild(list);
 //
 list.addEventListener("change",listChange);
 //
 function listChange(e)
 {
  var o = list.selectedData;
  //for(var i in o)
  //trace(i,"===",o[i]);
  ta.text = o.description;
 }
 //
 var ta = new TextArea(205,30,340,345);
 ta.wordWrap = true;
 ta.html = true;
 addChild(ta);
}
[img]http://www.roading.net/blog/images/code.gif[/img]
程序代碼
//-----------------------------------------------------------------------
//類實現
package net.roading.data
{
 public class XMLToObject
 {
  
  public function XMLToObject()
  {
  }
  
  static public function to(dp:XML,ignoreNamespace:Boolean=false):Object
  {
   if(dp)
   {
    var _obj={};
    dp.ignoreWhitespace = true;
    pNode(dp,_obj,ignoreNamespace);
    return _obj;
   }
   return null;
  }
  
  static private function pNode(node,obj:Object,ignoreNamespace:Boolean):void
  {
   //
   if(ignoreNamespace)node.setNamespace("");
   //
   var nodeName = node.name().toString();
   var o:Object = {};
   var j;
   if(node.attributes().length()>0)
   {
    for(j in node.attributes())
    {
     o[node.attributes()[j].name().toString()]=node.attributes()[j];
    }
    if(node.children().length()
本文轉自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/1986.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章