チェンジセット 321: as2/XMLParser

差分発生行の前後
無視リスト:
コミット日時:
2008/04/17 05:34:01 (4 年前)
コミッタ:
Mk-10
ログメッセージ:

AS2 用 Commands ライブラリの移動と XMLParser の修正

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as2/XMLParser/src/jp/cellfusion/xml/ArrayExtend.as

    r171 r321  
    1 /** 
    2  * @author Makoto 
     1/** 
     2 * @author Mk-10 a.k.a. cellfusion 
    33 */ 
    44class jp.cellfusion.xml.ArrayExtend extends Array  
    55{ 
    6          
     6        /** 
     7         * 存在しないプロパティで呼ばれたときに格納されている 
     8         * オブジェクトの名前を操作してプロパティ名と一致するオブジェクトを返す 
     9         */ 
    710        function __resolve(name:String):Object { 
    8                 var temp:Array = new ArrayExtend(); 
     11                var temp:ArrayExtend = new ArrayExtend(); 
    912                 
    1013                for (var i:Number = 0; i < this.length; i++) 
  • as2/XMLParser/src/jp/cellfusion/xml/XMLParser.as

    r171 r321  
    11import jp.cellfusion.xml.ArrayExtend; 
    2 import jp.cellfusion.utils.ArrayUtil; 
    32/** 
    4  * @author Makoto Matsutake(cellfusion.jp) 
     3 * @author Mk-10 a.k.a. cellfusion 
    54 * XMLを解析してXMLの構造を参考にしたObjectに変換するクラスです。 
    65 */ 
     
    4544        public static function toObject(xml:XML):Object 
    4645        { 
     46                xml.ignoreWhite = true; 
    4747                var rootNode:XMLNode = xml.firstChild; 
     48                 
     49                if (rootNode == "" || rootNode == null) { 
     50                        throw new Error("rootNodeが見つかりません"); 
     51                        return; 
     52                } 
    4853                 
    4954                // 強制配列変換するノード名を格納する 
    5055                arrayTags = rootNode.attributes.arrayTags.split(","); 
    51                 trace("arrayTags:"+arrayTags); 
    5256                 
    5357                var result:Object = parse(rootNode); 
     
    7579                        else 
    7680                        { 
    77                                 obj[name] = int(tagAttributes[idx]); 
     81                                obj[name] = Number(tagAttributes[idx]); 
    7882                        } 
    7983                } 
     
    98102                                        { 
    99103                                                // arrayTagに設定されているノード名の場合は配列にする 
    100                                                 if (ArrayUtil.contains(arrayTags, childTagName)) 
     104                                                if (contains(arrayTags, childTagName)) 
    101105                                                { 
    102106                                                        obj[childTagName] = new ArrayExtend(); 
     
    126130                return obj; 
    127131        } 
     132         
     133        /** 
     134         * 指定したオブジェクトが既に配列にあるか調べます 
     135         * @param       arr     調べる配列 
     136         * @param       obj     調べるオブジェクト 
     137         * @return      調べた結果を返します 
     138         */ 
     139        static private function contains(arr:Array, obj:Object):Boolean 
     140        { 
     141                var index = getItemIndex(arr, obj); 
     142                return (index >= 0); 
     143        } 
     144         
     145        /** 
     146         * 指定したオブジェクトが配列のどこにあるのか調べます 
     147         * @author      cellfusion 
     148         * @param        
     149         */ 
     150        static private function getItemIndex(arr:Array, obj:Object):Number 
     151        { 
     152                for (var i=0; i<arr.length; i++) if (arr[i] == obj) return i;  
     153                return - 1; 
     154        } 
    128155}