rss2.0 和 1.0的区别还挺大的,5d还是1.0的
其中实践了EventDispatcher的用法,有点收获,代码写的并不算规范吧,用起来还行,觉得rss用类去解析反倒麻烦,因为用处不大。
由于很多节点名称太多,为了方便,直接封在object里,对照名称读取就可以
例子:
class代码如下:
其中实践了EventDispatcher的用法,有点收获,代码写的并不算规范吧,用起来还行,觉得rss用类去解析反倒麻烦,因为用处不大。
由于很多节点名称太多,为了方便,直接封在object里,对照名称读取就可以
例子:
引用:var myRss:RSSParser = new RSSParser(); var myObj:Object = new Object(); myObj.LoadStart = function() { if (myRss.Loaded) { trace("ok"); } }; var myObj2:Object = new Object(); myObj2.LoadComplete = function(obj) { var infos = myRss.Info; trace(infos.link); trace(myRss.itemLength); for (var i = 0; i<myRss.itemLength; i++) { temp = myRss.Items[i]; trace(temp.link+temp.title); } }; myRss.addEventListener("LoadStart", myObj); myRss.addEventListener("LoadComplete", myObj2); myRss.LoadFile("data.xml");
class代码如下:
import mx.events.EventDispatcher;
class RSSParser{
private var doc:String;
private var channel:Object;
private var image:String;
private var textinput:String;
private var rssReader:XML;
public var Loaded:Boolean=true;
private var rss:XMLNode;
private var root:Object;
public var Items:Array;
public var itemLength:Number;
function RSSParser(){
Items= new Array();
root=this;
channel={};
rssReader=new XML();
rssReader.ignoreWhite=true;
//LoadFile();
EventDispatcher.initialize(this);
}
public function toString(){
return "Rss Reader";
}
function dispatchEvent(){}
function addEventListener(){}
function removeEventListener(){}
public function LoadFile(_doc:String){
doc= _doc;
var t:Object=this;
rssReader.load(doc);
rssReader.onLoad=function(succecced){
if(succecced){
t.rss=this.firstChild.firstChild;
t.parse();
}else{
Loaded=false;
}
}
var eventObj1:Object = {target:this,type:"LoadStart"};
dispatchEvent(eventObj1);
}
public function get Info(){
return channel;
}
public function getImage(){
if(!image){
return false;
}
return image;
}
public function get TextInput(){
if(!textinput){
return false;
}
return textinput;
}
private function parse():Boolean{
var node=rss.firstChild;
while(node){
if( node.nodeName == "image" )
{
image=parseInfo(node);
}
else if( node.nodeName == "item" )
{
var item= parseItem(node);
Items.push(item);
}
else if( node.nodeName == "textinput" )
{
textinput= parseInfo(node);
}else{
var __name=node.nodeName;
channel[__name]=node.firstChild.nodevalue;
}
node=node.nextSibling;
}
itemLength=Items.length;
var eventObj2:Object = {target:this,type:"LoadComplete"};
dispatchEvent(eventObj2);
//Loaded=true;
return true;
}
private function parseItem(item:XMLNode){
var obj={};
var node=item.firstChild;
while(node){
var __name=node.nodeName;
obj[__name]=node.firstChild.nodevalue;
node=node.nextSibling;
}
return obj;
}
private function parseInfo(item:XMLNode){
var obj={};
for (var str in item.attributes){
obj[str]=item.attributes[str];
}
return obj;
}
}
回复Comments
{commenttime}{commentauthor}
{CommentUrl}
{commentcontent}