最近はベイスターズ観戦日記と化しております

さぶれの日記
http://flex91.blog19.fc2.com/  presented by さぶれ@

プロフィール


さぶれ@

Author:さぶれ@
Webアプリなんぞ作っている会社に勤めるサラリーマン。自分の技術力のなさを嘆きつつ、日々勉強中。


最近の記事



カテゴリー



月別アーカイブ



スポンサーサイト

--/--/-- --:--|スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

E4Xのネームスペース処理

2008/06/06 11:12|FlexTB:0CM:1

ネームスペースを指定しないと処理されない


この前作った画像表示アプリに、画像検索エンジンから検索結果を引っ張ってきて、画像一覧に表示する機能を追加してみることにしました。画像検索エンジンはYahooのAPIを使用することにしました。
この前XMLの処理についても勉強したので、正直楽勝と思ったのですが落とし穴にはまりました。
Yahooから返ってくるXMLはこんな感じです。
var result:XML = 
<ResultSet xsi:schemaLocation="urn:yahoo:jp:srchmi http://api.search.yahoo.co.jp/ImageSearchService/V1/ImageSearchResponse.xsd" totalResultsAvailable="987433" totalResultsReturned="10" firstResultPosition="1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:jp:srchmi">
<Result>
<Title>ネコポーチ.jpg</Title>
<Summary>ネコポーチ 久しぶりにネコポーチが店頭に並びました。 前回作った時はあまり出足が良くなかったので久しく作らずにいたのですが、お客様の要望も</Summary>
<Url>http://www.kabanya.net/weblog/%E3%83%8D%E3%82%B3%E3%83%9D%E3%83%BC%E3%83%81.jpg</Url>
<ClickUrl>http://www.kabanya.net/weblog/%E3%83%8D%E3%82%B3%E3%83%9D%E3%83%BC%E3%83%81.jpg</ClickUrl>
<RefererUrl>http://www.kabanya.net/weblog/cat1</RefererUrl>
<FileSize>85.3kB</FileSize>
<FileFormat>jpeg</FileFormat>
<Height>298</Height>
<Width>448</Width>
<Thumbnail>
<Url>http://sp1.yt-thm-a01.yimg.com/image/25/m6/3626288746</Url>
<Height>93</Height>
<Width>140</Width>
</Thumbnail>
</Result>
</ResultSet>;
上記XMLからURLデータを抜き出そうとして下記のようにアクセスしたのですが、XMList.length()が0を返します。
trace(result.Result.Url.length);//出力結果:0
この原因は、ネームスペースを指定しないでアクセスしようとしたためです。上記XMLにはこんなネームスペースが指定されています。
xmlns="urn:yahoo:jp:srchmi"
よって、E4Xでアクセスする時は、こんな感じでネームスペースを指定しなければいけません。
var ns:Namespace = new Namespace("urn:yahoo:jp:srchmi");
trace(result.ns::Result.ns::Url.length());//出力結果:1
でも、毎回ネームスペースを指定するのは大変なので、デフォルトのネームスペースを指定します。
default xml namespace = new Namespace("urn:yahoo:jp:srchmi");
上記の宣言は、XMLインスタンスを生成した後やmxmlの初期化がすんでいない時に宣言すると良くわからないエラーがたくさんでます。注意してください。

なぞなこと

var ns:Namespace = new Namespace("urn:yahoo:jp:srchmi");
default xml namespace = ns;
こういう風に宣言すると
VerifyError: Error #1025: 無効なレジスタ 2 がアクセスされました。
というエラーがでます。何なんでしょうね・・・・。バグでしょうか?
スポンサーサイト

#|2008/08/08(金) 02:02 [ 編集 ]
このコメントは管理人のみ閲覧できます
コメントの投稿

管理者にだけ表示を許可する

トラックバック
トラックバックURLはこちら
http://flex91.blog19.fc2.com/tb.php/12-df2a596d

Amazon



ブログ内検索



RSSフィード



 |  未分類 | Flex | ActionScript3 | BlazeDS | Silverlight | 読書 | Javascript | Java読書会 | 横浜ベイスターズ | 
Copyright(C) 2008All Rights Reserved. さぶれの日記
Powered by FC2ブログ.  template designed by 遥かなるわらしべ長者への軌跡.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。