チェンジセット 321: as2/XMLParser
- コミット日時:
- 2008/04/17 05:34:01 (4 年前)
- ファイル:
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as2/XMLParser/src/jp/cellfusion/xml/ArrayExtend.as
r171 r321 1 /**2 * @author M akoto1 /** 2 * @author Mk-10 a.k.a. cellfusion 3 3 */ 4 4 class jp.cellfusion.xml.ArrayExtend extends Array 5 5 { 6 6 /** 7 * 存在しないプロパティで呼ばれたときに格納されている 8 * オブジェクトの名前を操作してプロパティ名と一致するオブジェクトを返す 9 */ 7 10 function __resolve(name:String):Object { 8 var temp:Array = new ArrayExtend();11 var temp:ArrayExtend = new ArrayExtend(); 9 12 10 13 for (var i:Number = 0; i < this.length; i++) as2/XMLParser/src/jp/cellfusion/xml/XMLParser.as
r171 r321 1 1 import jp.cellfusion.xml.ArrayExtend; 2 import jp.cellfusion.utils.ArrayUtil;3 2 /** 4 * @author M akoto Matsutake(cellfusion.jp)3 * @author Mk-10 a.k.a. cellfusion 5 4 * XMLを解析してXMLの構造を参考にしたObjectに変換するクラスです。 6 5 */ … … 45 44 public static function toObject(xml:XML):Object 46 45 { 46 xml.ignoreWhite = true; 47 47 var rootNode:XMLNode = xml.firstChild; 48 49 if (rootNode == "" || rootNode == null) { 50 throw new Error("rootNodeが見つかりません"); 51 return; 52 } 48 53 49 54 // 強制配列変換するノード名を格納する 50 55 arrayTags = rootNode.attributes.arrayTags.split(","); 51 trace("arrayTags:"+arrayTags);52 56 53 57 var result:Object = parse(rootNode); … … 75 79 else 76 80 { 77 obj[name] = int(tagAttributes[idx]);81 obj[name] = Number(tagAttributes[idx]); 78 82 } 79 83 } … … 98 102 { 99 103 // arrayTagに設定されているノード名の場合は配列にする 100 if ( ArrayUtil.contains(arrayTags, childTagName))104 if (contains(arrayTags, childTagName)) 101 105 { 102 106 obj[childTagName] = new ArrayExtend(); … … 126 130 return obj; 127 131 } 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 } 128 155 }

