/** RSS Parser Class **/ /** Version 1.1 **/ /** 2006/1/18 By Yusuke Wada **/ class RssParser{ private var rssUrl:String; private var rss:Rss; private var rssSource:XML; private var tempXml:XML; public var onParseEnd; //コンストラクタ public function RssParser(rssUrl:String){ this.rssUrl = rssUrl; rssSource = new XML(); rss = new Rss(); tempXml = new XML(); var thisObj:RssParser = this; rssSource = new XML(); rssSource.ignoreWhite = true; rssSource.onLoad = function(success:Boolean){ if(success){ thisObj.tempXml = this; thisObj.execParse(); }else{ trace("RSSの取得に失敗"); } } } private function getElementsByTagName(xmlArray:Array, tagname:String):Array{ var Nodes:Array = new Array(); for(var i=0; i < xmlArray.childNodes.length; i++){ if( (xmlArray.childNodes[i].nodeType == 1) && (xmlArray.childNodes[i].nodeName == tagname)){ Nodes.push(xmlArray.childNodes[i]); } getElementsByTagName(xmlArray.childNodes[i],tagname); } return Nodes; } private function getTitleText(titleElement):String{ return titleElement.firstChild.nodeValue; } private function execParse():Void{ var rssVersion:String = new String(); //RSSのバージョン判定 if(tempXml.firstChild.attributes.version == "2.0"){ //RSS2.0 rssVersion = "2.0"; trace("RSS2.0"); }else if(tempXml.firstChild.nodeName.indexOf("http://purl.org/rss/1.0")!=-1){ //RSS1.0 rssVersion = "1.0"; trace("RSS1.0"); }else{ //other version rssVersion = "other"; trace("other"); } // trace("nodeName: "+ tempXml.firstChild.nodeName); // trace("attributes: "+ tempXml.firstChild.attributes.version); var channelArr:Array = tempXml.firstChild.childNodes[0]; this.rss.setTitle(getTitleText(getElementsByTagName(channelArr, "title")[0])); this.rss.setLink(getTitleText(getElementsByTagName(channelArr, "link")[0])); if(rssVersion == "1.0"){ //RSS1.0の場合 var tempArr = tempXml.firstChild.childNodes; for(var i = 0;i