FrontPage

 

 
最新更新:

 
人気のページ:

 
最新コメント:

 
687

 

E4X でネームスペースがあると、処理が面倒なので、なんとかして欲しいです。E4XをFlexで使う時に見るべきサイトのリンクをメモしておきます。

以下、上記を見て作りました。

Flex3でこのブログのRSSをグリッドに表示するプログラム例:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication
	xmlns:mx="http://www.adobe.com/2006/mxml"
	layout="absolute"
	initialize="dl.send()">
	<!-- data -->
	<mx:HTTPService id="dl"
		url="http://d.aoikujira.com/blog/page/get/rss"
		resultFormat="e4x"
		result="onResult()"/>
	<mx:ArrayCollection id="rss_data"/>
	<!-- ui -->
	<mx:DataGrid id="rss_grid"
		width="100%" height="100%"
		dataProvider="{rss_data}">
		<mx:columns>
			<mx:DataGridColumn dataField="title" headerText="タイトル"/>
			<mx:DataGridColumn dataField="date" headerText="日付"/>
			<mx:DataGridColumn dataField="link" headerText="リンク"/>
		</mx:columns>
	</mx:DataGrid>
<mx:Script>
	<![CDATA[
		import mx.collections.XMLListCollection;
		namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
		namespace rss = "http://purl.org/rss/1.0/";
		namespace dc = "http://purl.org/dc/elements/1.1/";
		namespace content = "http://purl.org/rss/1.0/modules/content/";
		private function onResult():void {
			var result_xml:XML = XML(dl.lastResult);
			for each (var x:XML in result_xml.rss::item) {
				var o:Object = {
					title: x.rss::title,
					date: x.dc::date,
					link: x.rss::link
				};
				rss_data.addItem(o);
			}
		}
	]]>
</mx:Script>
</mx:WindowedApplication>

「ネームスペース::タグ名」の形でアクセスする必要があるので注意が必要です。また、一番ハマったのは、XML上では、ネームスペースがない普通のタグと思っても、デフォルトでネームスペースが設定されている「xmlns="http://xxx";」場合は、そのネームスペース::タグ名でアクセスしないと正しく値を取得できません。

例えば、デフォルトのネームスペースが設定されているとき、「<item><title>xxx</title></item>」のtitleにアクセスするには、「item.title」とするのではダメで、一度「namespace def="http://default/namespace/uri";」としてネームスペースを定義した上で「def::item.def::title」と記述しなくてはなりません。

コメント


作成:2008-04-24 15:53:14/更新:2008-07-12 12:17:16

→テキスト形式で見る

くじらぶろぐD by kujirahand RSS

konawiki