E4Xのまとめ-その2-
こんにちは。Flex大好き橋本です。
今回は、前回の「E4Xのまとめ-その1-」の続きということで、子孫ノードへのアクセス、値のフィルタリング、名前空間の利用についてまとめていきたいと思います。
・子孫ノードへのアクセス。
「..」を使って、子孫ノードにアクセスすることができます。
・条件指定によるフィルタリング
「()」の中に条件を指定することによって、各ノードの値や属性値について、フィルタリングを行うことができます。
・名前空間が指定されている値の取得
Namespaceクラスを利用することで、名前空間が指定されているXMLの値を取得することが可能です。
//例
var xml:XML =
aaaa
bbbb
;
// namespaceを指定して値を取得
var ns:Namespace = new namespace("http://hogehoge.hoge");
trace(xml.name); // aaaa
trace(xml.ns::name); // bbbb
<
default xml namespace ディレクティブを利用することで、デフォルトのnamespaceを指定することもできます。
以上、前回と今回の2回に渡って、簡単ですがAS3におけるE4Xの使い方をまとめてみました。
特に、フィルタリングの部分はうまく使うことで、非常に簡単に目的の値を取得することが可能になるかと思いますので、尻込みせずに、ぜひ使ってみていただけたらと思います。
今回は、前回の「E4Xのまとめ-その1-」の続きということで、子孫ノードへのアクセス、値のフィルタリング、名前空間の利用についてまとめていきたいと思います。
・子孫ノードへのアクセス。
「..」を使って、子孫ノードにアクセスすることができます。
- //例
- var
xml:XML = <root> <hoge>hoge1</hoge> <fuga> <hoge>hoge2</hoge> </fuga> - </root>;
- //前回あったとおり、「.」を使うと、直接の子ノードを取得することができます。
- var
a:XMLList = xml.hoge; - for
each (var b:XML in a) { trace(b); //hoge1 - }
- //「..」を使うと、「.」とは異なり、直接の子ノードだけではなく、すべての子孫ノードを取得することができます。
- var
a:XMLList = xml..hoge; - for
each (var b:XML in a) { trace(b); //hoge1, hoge2 - }
・条件指定によるフィルタリング
「()」の中に条件を指定することによって、各ノードの値や属性値について、フィルタリングを行うことができます。
- //例
- var
xml:XML = <root> <member id="1"> <name>akifumi</name> <job>engineer</job> </member> <member id="2"> <name>tarou</name> <job>analyst</job> </member> </root>; - //
ノードの値でフィルタリング - trace(xml.member.(name
== "akifumi")); // 一つめの<member>ノードを取得 - //
属性値でフィルタリング - trace(xml.member.(@id
== 2)); // 二つめの<member>ノードを取得 - trace(xml.member.(@id
<= 1)); //不等号を使うことも可能。この場合は、一つめの<member>ノードを取得 - // 正規表現によるマッチングを利用することもできます。
- var
regexp:RegExp = new RegExp("engineer"); - trace(xml.member.(job.toString().match(regexp)
!= null)); //一つめの<job>ノードを取得
・名前空間が指定されている値の取得
Namespaceクラスを利用することで、名前空間が指定されているXMLの値を取得することが可能です。
//例
var xml:XML =
// namespaceを指定して値を取得
var ns:Namespace = new namespace("http://hogehoge.hoge");
trace(xml.name); // aaaa
trace(xml.ns::name); // bbbb
<
default xml namespace ディレクティブを利用することで、デフォルトのnamespaceを指定することもできます。
- var
xml:XML = <root xmlns:hoge="http://hogehoge.hoge" xmlns:fuga="http://fugafuga.fuga"> <fuga:name>aaaa</fuga:name> <hoge:name>bbbb</hoge:name> - </root>;
- //
デフォルトnamespaceを設定 - var
ns1:Namespace = new Namespace("http://hogehoge.hoge"); - default
xml namespace = ns1; - trace(xml.name);
// bbbb - //
デフォルトnamespaceを切り替え - var
ns2:Namespace = new Namespace("http://fugafuga.fuga"); - default
xml namespace = ns2; - trace(xml.name);
// aaaa
以上、前回と今回の2回に渡って、簡単ですがAS3におけるE4Xの使い方をまとめてみました。
特に、フィルタリングの部分はうまく使うことで、非常に簡単に目的の値を取得することが可能になるかと思いますので、尻込みせずに、ぜひ使ってみていただけたらと思います。
トラックバックURI
最近の記事
JavaScriptのクロスドメイン問題対応方法 [2012年05月17日 : 笹亀弘]
JavaScriptのコーディング規約を気軽にチェック [2012年05月14日 : 中川善樹]
誕生日プレゼント [2012年05月10日 : 阿部恵]
イラストでわかる!git入門の入門 [2012年05月09日 : 志田仁美]
【CSS3】HSL色空間による色指定のすゝめ [2012年05月09日 : 橋本章史]
インスピレーションをかきたてるポスターデザインのまとめ記事のまとめ [2012年04月25日 : 鴨田健次]
エンジニアの英会話 〜とっさの一言〜 [2012年04月19日 : 斉藤勝也]
イコライザーをFireworksで描いてみました [2012年04月16日 : 和田記光]
SFNewTech Japan Night のファイナリストに選出されました!(他、もろもろの出展の御案内) [2012年04月06日 : 小林有佳]
使えるとちょっと便利なSSHのTIPS [2012年04月04日 : 牧野克俊]













コメントフォーム