widgetown 開発チームブログ(仮)

5月 27th, 2008

AS2 RSSをストリングでパース

Posted by KOBAYSU in as2.0

あるベテランCプログラマーの人が

「XMLだけはめんどくさいからハッシュ化しちゃうよね」

といったかいわないかは定かではありませんが。

男ならStringのメソッドでRSSをパース

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
import mx.utils.Delegate;
var lv:LoadVars = new LoadVars ();
 
lv.onData = Delegate.create(this,function(str:String):Void
{
	var result:Array=[];
	str = str.split(' ').join("").split('\t').join('').split('\r\n').join('');
 
	var items:Array = str.split('<item>');
	items.shift();
 
	var len:Number = items.length;
 
	for(var i=0;i<len ;++i)
	{
		var item:String = items[i];
 
		var title:String = item.substring(item.indexOf('<title>'),item.indexOf(''));
		var description:String = item.substring(item.indexOf('<description>'),item.indexOf('</description>'));
 
		var link:String  = item.substring(item.indexOf('<link>'),item.indexOf('</link>'));
		var guid:String = item.substring(item.indexOf('<guid>'),item.indexOf('</guid>'));
		//CDATAを削除;
		description = description.split('< ![CDATA[').join('').split(']]>').join('');
 
		var o:Object = {};
		o.title = title;
		o.description = description;
		o.link = link;
		o.guid = guid;
 
		result.push(o);
 
	};
	trace(mx.data.binding.ObjectDumper.toString(result));
});
 
lv.load ('http://weblogs.macromedia.com/akamijo/index.xml');
 
</len></item>

かなりきちんとパースできて正直ワロタ。
コッシーにindexOfを使えといわれて使ったら高速になったよコッシー!!

Comments are closed.

現在コメントフォームは利用できません。

-->