home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 August / CA08.iso / Multimedija / shufflr.air / ShufflrClient.swf / scripts / mx / rpc / xml / SimpleXMLDecoder.as < prev    next >
Encoding:
Text File  |  2010-06-23  |  4.7 KB  |  156 lines

  1. package mx.rpc.xml
  2. {
  3.    import flash.xml.XMLNode;
  4.    import flash.xml.XMLNodeType;
  5.    import mx.collections.ArrayCollection;
  6.    import mx.utils.ObjectProxy;
  7.    
  8.    public class SimpleXMLDecoder
  9.    {
  10.       private var makeObjectsBindable:Boolean;
  11.       
  12.       public function SimpleXMLDecoder(param1:Boolean = false)
  13.       {
  14.          super();
  15.          this.makeObjectsBindable = param1;
  16.       }
  17.       
  18.       public static function getLocalName(param1:XMLNode) : String
  19.       {
  20.          var _loc2_:String = param1.nodeName;
  21.          var _loc3_:int = int(_loc2_.indexOf(":"));
  22.          if(_loc3_ != -1)
  23.          {
  24.             _loc2_ = _loc2_.substring(_loc3_ + 1);
  25.          }
  26.          return _loc2_;
  27.       }
  28.       
  29.       public static function simpleType(param1:Object) : Object
  30.       {
  31.          var _loc3_:String = null;
  32.          var _loc4_:String = null;
  33.          var _loc2_:Object = param1;
  34.          if(param1 != null)
  35.          {
  36.             if(param1 is String && String(param1) == "")
  37.             {
  38.                _loc2_ = param1.toString();
  39.             }
  40.             else if(isNaN(Number(param1)) || param1.charAt(0) == "0" || param1.charAt(0) == "-" && param1.charAt(1) == "0" || param1.charAt(param1.length - 1) == "E")
  41.             {
  42.                _loc3_ = param1.toString();
  43.                _loc4_ = _loc3_.toLowerCase();
  44.                if(_loc4_ == "true")
  45.                {
  46.                   _loc2_ = true;
  47.                }
  48.                else if(_loc4_ == "false")
  49.                {
  50.                   _loc2_ = false;
  51.                }
  52.                else
  53.                {
  54.                   _loc2_ = _loc3_;
  55.                }
  56.             }
  57.             else
  58.             {
  59.                _loc2_ = Number(param1);
  60.             }
  61.          }
  62.          return _loc2_;
  63.       }
  64.       
  65.       public function decodeXML(param1:XMLNode) : Object
  66.       {
  67.          var _loc2_:Object = null;
  68.          var _loc6_:String = null;
  69.          var _loc7_:uint = 0;
  70.          var _loc8_:XMLNode = null;
  71.          var _loc9_:String = null;
  72.          var _loc10_:Object = null;
  73.          var _loc11_:Object = null;
  74.          var _loc3_:Boolean = false;
  75.          if(param1 == null)
  76.          {
  77.             return null;
  78.          }
  79.          var _loc4_:Array = param1.childNodes;
  80.          if(_loc4_.length == 1 && _loc4_[0].nodeType == XMLNodeType.TEXT_NODE)
  81.          {
  82.             _loc3_ = true;
  83.             _loc2_ = SimpleXMLDecoder.simpleType(_loc4_[0].nodeValue);
  84.          }
  85.          else if(_loc4_.length > 0)
  86.          {
  87.             _loc2_ = {};
  88.             if(makeObjectsBindable)
  89.             {
  90.                _loc2_ = new ObjectProxy(_loc2_);
  91.             }
  92.             _loc7_ = 0;
  93.             while(_loc7_ < _loc4_.length)
  94.             {
  95.                _loc8_ = _loc4_[_loc7_];
  96.                if(_loc8_.nodeType == XMLNodeType.ELEMENT_NODE)
  97.                {
  98.                   _loc9_ = getLocalName(_loc8_);
  99.                   _loc10_ = decodeXML(_loc8_);
  100.                   _loc11_ = _loc2_[_loc9_];
  101.                   if(_loc11_ != null)
  102.                   {
  103.                      if(_loc11_ is Array)
  104.                      {
  105.                         _loc11_.push(_loc10_);
  106.                      }
  107.                      else if(_loc11_ is ArrayCollection)
  108.                      {
  109.                         _loc11_.source.push(_loc10_);
  110.                      }
  111.                      else
  112.                      {
  113.                         _loc11_ = [_loc11_];
  114.                         _loc11_.push(_loc10_);
  115.                         if(makeObjectsBindable)
  116.                         {
  117.                            _loc11_ = new ArrayCollection(_loc11_ as Array);
  118.                         }
  119.                         _loc2_[_loc9_] = _loc11_;
  120.                      }
  121.                   }
  122.                   else
  123.                   {
  124.                      _loc2_[_loc9_] = _loc10_;
  125.                   }
  126.                }
  127.                _loc7_++;
  128.             }
  129.          }
  130.          var _loc5_:Object = param1.attributes;
  131.          for(_loc6_ in _loc5_)
  132.          {
  133.             if(!(_loc6_ == "xmlns" || _loc6_.indexOf("xmlns:") != -1))
  134.             {
  135.                if(_loc2_ == null)
  136.                {
  137.                   _loc2_ = {};
  138.                   if(makeObjectsBindable)
  139.                   {
  140.                      _loc2_ = new ObjectProxy(_loc2_);
  141.                   }
  142.                }
  143.                if(_loc3_ && !(_loc2_ is ComplexString))
  144.                {
  145.                   _loc2_ = new ComplexString(_loc2_.toString());
  146.                   _loc3_ = false;
  147.                }
  148.                _loc2_[_loc6_] = SimpleXMLDecoder.simpleType(_loc5_[_loc6_]);
  149.             }
  150.          }
  151.          return _loc2_;
  152.       }
  153.    }
  154. }
  155.  
  156.