/ Published in: Other

Expand |
Embed | Plain Text
/* ã“ã“ã‹ã‚‰ */ //XMLã®ãƒãƒ¼ãƒ‰ var infoXML = new XML(); var xmlData = new Array();//XMLãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹é…列 // 改行ãªã©ã®ç©ºç™½ã‚’無視 infoXML.ignoreWhite = true; infoXML.onLoad = function(success) { parseDataXML(success ? this : null);} infoXML.load("/* XMLã®ãƒ•ァイルパス */"); // ---- XMLè§£æž function parseDataXML(infoXML) { if (!infoXML) { trace("XMLèªã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼"); return; } //è§£æžå®Ÿè¡Œ procParseDataXML(infoXML, xmlData, "", ""); /* ------ 処ç†å¾Œã®ã‚¹ã‚¯ãƒªãƒ—トã¯ã“ã“以下ã«è¨˜è¼‰ ------ */ /* ------ 処ç†å¾Œã®ã‚¹ã‚¯ãƒªãƒ—トã“ã“ã¾ã§ ------ */ } // ---- å›žå¸°å‡¦ç† function procParseDataXML(xmldata:XML, arraydata:Array, arraystr:String, shortcut:String){ /* ------ è¨å®š ------ */ //ユニーク属性 var unique_on:Boolean = true; //ユニーク属性をセットã™ã‚‹æ™‚ã¯true,使ã‚ãªã„時ã¯false var unique:String = "id"; //ユニーク属性è¨å®š //ガイド出力 var guide:Boolean = true; //変数ã®ãƒ‘スを出力ã™ã‚‹æ™‚ã¯ã‚³ãƒ¡ãƒ³ãƒˆã‚¢ã‚¦ãƒˆ //ダブり防æ¢ç•ªå·è‡ªå‹•ä»˜åŠ ã‚ªãƒ³ var dub_on:Boolean = true; //ãƒ€ãƒ–ã‚Šé˜²æ¢æ©Ÿèƒ½(_2,_3…)をオフã«ã™ã‚‹æ™‚ã¯false /* ------ è¨å®šã“ã“ã¾ã§ ------ */ /** usage ・å„è¦ç´ åã¯ãƒ”リオドã§ã¤ãªã ・トップè¦ç´ ã‹ã‚‰é †ã«xmlData['第1è¦ç´ å.第2è¦ç´ å.第3è¦ç´ å']ã¨ç¶šã ・åŒéšŽå±¤ã«åŒã˜è¦ç´ åãŒï¼’ã¤ä»¥ä¸Šå˜åœ¨ã™ã‚‹ã¨ãã€ï¼’ã¤ç›®ä»¥é™ã¯è‡ªå‹•çš„ã«è¦ç´ åã®å¾Œã«_2,_3…ã¨ä»˜ã ・è¦ç´ ã«ãƒ¦ãƒ‹ãƒ¼ã‚¯å±žæ€§ãŒå«ã¾ã‚Œã‚‹å ´åˆã¯xmlData['第1è¦ç´ å.第2è¦ç´ ユニークå属性値.第3è¦ç´ å'] ・ユニーク属性値ãŒé‡è¤‡ã™ã‚‹æ™‚ã¯ï¼’ã¤ç›®ä»¥é™è‡ªå‹•çš„ã«_2,_3…ã¨ä»˜ã xmlData['第1è¦ç´ å.第2è¦ç´ ユニークå属性値_2.第3è¦ç´ å'] ・attributesã®å€¤ã¯è©²å½“ã™ã‚‹è¦ç´ @属性å ・è¦ç´ ãŒå˜åœ¨ã™ã‚‹éšŽå±¤ã®è¦ç´ ã®æ•°(Number)ã¯xmlData['第1è¦ç´ å.第2è¦ç´ å.第3è¦ç´ å->max'] ・åŒéšŽå±¤ã®é ã‹ã‚‰æ•°ãˆã¦è©²å½“ã™ã‚‹è¦ç´ ã®é †ç•ª(Number)ã¯xmlData['第1è¦ç´ å.第2è¦ç´ å.第3è¦ç´ å->num'] ・ショートカットパスã¯1ã‹ã‚‰æ•°ãˆãŸé †ç•ªã‚’ピリオドã§ã¤ãªã **/ var arraystr_ext:String; var arraySum:String; var scSum:String; for(var i:Number=0 ; i < xmldata.childNodes.length ; i++){ //è¦ç´ å arraystr_ext = xmldata.childNodes[i].nodeName; //ãƒ€ãƒ–ã‚Šã‚’é˜²æ¢ if(arraydata[arraystr + '.' + arraystr_ext] != undefined && dub_on){ var w = 2; while(arraydata[arraystr + '.' + arraystr_ext + '_' + w] != undefined){ w++; } arraystr_ext += "_" + w; } //パスを決定 arraySum = arraystr + "." + arraystr_ext; //最åˆã®"."を抜ã if(arraystr == ""){ arraySum = arraySum.substr(1); } //データ挿入 arraydata[arraySum] = xmldata.childNodes[i].childNodes[0].nodeValue; //Attributesã®å€¤ã‚’å–å¾— var Attributes:Object = xmldata.childNodes[i].attributes; for(var attribute_str:String in Attributes){ //属性ãŒidã®å ´åˆãƒ¦ãƒ‹ãƒ¼ã‚¯ãªAttributesã®å€¤ã§å‘¼ã³å‡ºã— if(attribute_str == unique && unique_on){ //ダブり表示を消㙠arraystr_ext = xmldata.childNodes[i].nodeName; arraystr_ext += Attributes[attribute_str]; //属性ã®å€¤ãŒãƒ€ãƒ–ã‚‹ã¨ã if(arraydata[arraystr + '.' + arraystr_ext] != undefined){ var w = 2; while(arraydata[arraystr + '.' + arraystr_ext + '_' + w] != undefined){ w++; } arraystr_ext += "_" + w; } arraySum = arraystr + "." + arraystr_ext; arraydata[arraySum] = xmldata.childNodes[i].childNodes[0].nodeValue; } //属性ã®å€¤æ›¸ã出㗠arraydata[arraySum + "@" + attribute_str] = Attributes[attribute_str]; //ガイド if(guide){ trace(" Attributes "+ attribute_str +" ã®å€¤ : " + Attributes[attribute_str] + newline + " xmlData['" + arraySum + "@" + attribute_str + "']" + newline); } } //ショートカットパスè¨å®š scSum = shortcut + "." + (i + 1); if(shortcut == ""){scSum = scSum.substr(1);} arraydata[scSum] = xmldata.childNodes[i].childNodes[0].nodeValue; //åŒéšŽå±¤ã®è¦ç´ ã®ç·æ•°æ›¸ã出㗠arraydata[arraySum + "->max"] = arraydata[scSum + "->max"] = xmldata.childNodes.length; //åŒéšŽå±¤ã®é ã‹ã‚‰æ•°ãˆãŸé †ç•ªæ›¸ã出㗠arraydata[arraySum + "->num"] = arraydata[scSum + "->num"] = i + 1; //ガイド if(guide){ trace(i + 1 + "/" + xmldata.childNodes.length + " " + xmldata.childNodes[i].nodeName + " ã®å†…容 : " + xmldata.childNodes[i].childNodes[0].nodeValue + newline + "xmlData['" + arraySum + "']" + newline + "or : " + "xmlData['" + scSum + "']" + newline); } // ---- 一階層下㫠if(xmldata.childNodes[i].childNodes[0].firstChild != null){ procParseDataXML(xmldata.childNodes[i], arraydata, arraySum, scSum); } } }
You need to login to post a comment.