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

2010/05/21

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

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

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

//ノーマルな書き方
var myxml:XML = 
	1
	2
	3


//文字から生成することが可能
var str1:String = "123";
var myxml1:XML = XML(str1); //OK

xml_xmllist_fig1

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

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

//ルートノードをとってみる
var str2:String = "123";
//var myxml2:XML = XML(str2); //Error ルートノードがひとつでないのでXMLではない
var mylist0:XMLList = XMLList(str2); //OK

xml_xmllist_fig2

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

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

xml_xmllist_fig3

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

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

var myxml3:XML = 
	1
	2
	3


//XMLからノードを取り出すとXMLListになる
var mylist1:XMLList = myxml3.a;
trace(mylist1);

//こういう書き方も
var mylist2:XMLList = myxml3.child("a");
trace(mylist2);

xml_xmllist_fig4

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

//子ノードから抜き出したものをXMLにするには
//子ノード以下がルートノードになるようにすればよい
var myxml4:XML = 
	
		1
		2
		3
	
	4


//そのままだと内部でXMLListとして扱われるのでXMLに型変換してやる
var myxml5:XML = XML(myxml4.a);
trace(myxml5);

xml_xmllist_fig5

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


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

ページトップへ戻る