2009/06/17 | 17:51 pm

xml and namespace

RSS 1.0 を読もうとしたらエラー出たス。

RSS 2.0 の仕様だと、<xml>で始まるのだけれども、
RSS 1.0 の仕様でいくと<rdf>で始まるのでちょいと勝手が違うようです。

なので、default xml namespace して rdf を認識(??)させてあげないとダメみたい。
注) ↓ は、BulkLoader 使って読み込んだあとです。

var feedData:XML = bulkLoader.getXML( "feed_data" );
var feedList:XMLList;
// RSS 1.0 のときと RSS 2.0 のときで分ける
if(feedData.name() == "http://www.w3.org/1999/02/22-rdf-syntax-ns#::RDF") {
	var ns:Namespace = new Namespace("http://purl.org/rss/1.0/");
	default xml namespace = ns;
	feedList = feedData.item;
} else {
	feedList = feedData.channel.item;
}

っで、これでも Runtime Error #1025 喰らったのでさらに調べると
どーやら、ローカル変数で default xml namespace させるとダメのようです。

private var ns:Namespace = new Namespace("http://purl.org/rss/1.0/");
private function onLoaded( e:Event ):void {
	var feedData:XML = bulkLoader.getXML( "feed_data" );
	var feedList:XMLList;
	// RSS 1.0 のときと RSS 2.0 のときで分ける
	if(feedData.name() == "http://www.w3.org/1999/02/22-rdf-syntax-ns#::RDF") {
		default xml namespace = ns;
		feedList = feedData.item;
	} else {
		feedList = feedData.channel.item;
	}
}

もしくは変数宣言しないでそのまま記述しても大丈夫

private function onLoaded( e:Event ):void {
	var feedData:XML = bulkLoader.getXML( "feed_data" );
	var feedList:XMLList;
	// RSS 1.0 のときと RSS 2.0 のときで分ける
	if(feedData.name() == "http://www.w3.org/1999/02/22-rdf-syntax-ns#::RDF") {
		default xml namespace = new Namespace("http://purl.org/rss/1.0/");
		feedList = feedData.item;
	} else {
		feedList = feedData.channel.item;
	}
}

COMMENT

CATEGORY

POSTED

jam





JUN NAKAJIMA
Tokyo, Japan.
member of Onawatobi.
contact@brooklyn.jp