[AS3]XMLとXMLListの違いを図を使ってまとめてみた

2010/05/21

こんにちは。きんくまです。
ようやくXMLとXMLListの違いがわかってきたのでまとめてみます。

XMLのルートノードはひとつだけ

XMLはルートノード(一番上のノード)がひとつだけの状態をいいます。

1
2
3
4
5
6
7
8
9
10
//ノーマルな書き方
var myxml:XML = <myroot>
    <a>1</a>
    <b>2</b>
    <c>3</c>
</myroot>
 
//文字から生成することが可能
var str1:String = "<myroot><a>1</a><b>2</b><c>3</c></myroot>";
var myxml1:XML = XML(str1); //OK

xml_xmllist_fig1

XMLListのルートノードがなくXMLが並列化されている

XMLListはXMLをまとめたものです。
いいかえると、個別のXMLが並列化されている状態ともいえます。
XMLListはルートノードがひとつだけじゃない状態をいいます。

1
2
3
4
//ルートノードをとってみる
var str2:String = "<a>1</a><b>2</b><c>3</c>";
//var myxml2:XML = XML(str2); //Error ルートノードがひとつでないのでXMLではない
var mylist0:XMLList = XMLList(str2); //OK

xml_xmllist_fig2

ルートノードさえあれば子の要素は並列していてもよい

1
2
3
4
5
6
//ルートノードさえあれば子の要素は並列していてもよい
var myxml3:XML = <myroot>
    <a>1</a>
    <a>2</a>
    <a>3</a>
</myroot>

xml_xmllist_fig3

XMLからノードを取り出すとXMLListになる

XMLからノードを取り出すとXMLListになります。

1
2
3
4
5
6
7
8
9
10
11
12
13
var myxml3:XML = <myroot>
    <a>1</a>
    <a>2</a>
    <a>3</a>
</myroot>
 
//XMLからノードを取り出すとXMLListになる
var mylist1:XMLList = myxml3.a;
trace(mylist1);
 
//こういう書き方も
var mylist2:XMLList = myxml3.child("a");
trace(mylist2);

xml_xmllist_fig4

子ノードから抜き出したものをXMLにするには子ノード以下がXMLの構造(ルートノードがひとつ)になるようにすればよい

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//子ノードから抜き出したものをXMLにするには
//子ノード以下がルートノードになるようにすればよい
var myxml4:XML = <myroot>
    <a>
        <b>1</b>
        <b>2</b>
        <b>3</b>
    </a>
    <c>4</c>
</myroot>
 
//そのままだと内部でXMLListとして扱われるのでXMLに型変換してやる
var myxml5:XML = XML(myxml4.a);
trace(myxml5);

xml_xmllist_fig5

これでXMLとXMLListの行き来がイメージしやすくなるかと。

LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

LINEスタンプ作りました!
毎日使える。とぼけたウサギ。LINEスタンプ販売中! 毎日使える。とぼけたウサギ

ページトップへ戻る