JAVAC.JP
HOSHI TETSUYA 星鉄矢
2005/07/25
hossy@javac.jp
http://www.javac.jp
Google
WWW を検索 WWW.JAVAC.JP を検索

4-4 送信用XMLクラス

前述はXMLを用いた受信・読み込みに関してでしたが、送信においてXMLを使用することもできます。
var myXml:XML=new XML();
var x:XMLNode=myXml.createElement("HOGE");
var y1:XMLNode=myXml.createElement("FUGE");
var z1:XMLNode=myXml.createTextNode("あいうえお");
var y2:XMLNode=myXml.createElement("FUGA");
var z2:XMLNode=myXml.createTextNode("かきくけこ");
y1.appendChild(z1);
y2.appendChild(z2);
x.appendChild(y1);
x.appendChild(y2);
var y3:XMLNode=myXml.createElement("FUGO");
y3.attributes.a="AAA";
y3.attributes.b="BBB";
y3.attributes.c="CCC";
x.appendChild(y3);
myXml.appendChild(x);
trace(myXml);
stop();
出力結果は以下のようになります。
<HOGE><FUGE>あいうえお</FUGE><FUGA>かきくけこ</FUGA>
<FUGO c="CCC" b="BBB" a="AAA" /></HOGE>
これを用いることで、XML送受信を行うことができます。

attributes属性を用いてXMLノードを作成する際ですが、
var myXml:XML=new XML();
var x:XMLNode=myXml.createElement("HOGE");
x.attributes={a:"AAA",b:"BBB",c:"CCC"};
myXml.appendChild(x);
trace(myXml);
stop();
のように、Objectリテラルを用いて導入すると、
<HOGE a="AAA" b="BBB" c="CCC" __proto__="[object Object]" 
constructor="[type Function]" />
のように、予期せぬ属性が入ってきます。Macromediaのバグと考えられます。
ですので、attributesを用いて属性を入力する際には、
var x:XMLNode=myXML.createElement("HOGE");
for(var key:String in paramObj){
    var key:String=key;
    var value:String=String(paramObj[key]);
    x.attributes[key]=value;
}
のようにfor...in ループで行う必要があります。



BACKTOPNEXT




All Contents Copyright (C) 2005 HOSHI Tetsuya
Home