しつこく、このサンプルを使います。
さて、次にプログラムからXMLエレメントを生成したり、XMLオブジェクトにエレメントを追加する方法を解説します。
これが出来ると、他のアプリケーションとのデータのやり取りの際に、統一された汎用フォーマットを利用できるので、開発が楽になります。
上記サンプルだと、「あずにゃん入部」ボタンと「俺も入部」ボタンになりますね。
あずにゃん入部ボタンは予め用意した下記のようなXMLデータを利用しています。
//あずにゃんのデータ
var azunyan_xml:XML =
<member part="Guitar">
<name>中野 梓</name>
</member>;
追加するボタンの処理は
test_xml.appendChild(azunyan_xml);
このように、「XMLデータ.appendChild(追加するXMLデータ)」と記述します。
すると、「<houkagoTeaTime>」エレメントの末尾に、指定したXMLデータが追加されます。
その後、コンボボックスのデータプロバイダの設定処理を行えば、入部した部員やパートがコンボボックスに追加されます。
次に「俺も入部」ボタンで、入力データから生成したエレメントの挿入は
var nameStr:String = oreName.text;
var partStr:String = orePart.text;
//テキストが空の場合return
if(nameStr == "" || partStr == ""){
return;
}
var addXML:XML = <member part={partStr}><name>{nameStr}</name></member>;
test_xml.appendChild(addXML);
このように記述します。「oreName」「orePart」はそれぞれテキスト入力のテキストフィールドです。どちらかのテキストが入ってなかったら、returnによって、以降の処理を飛ばします。
キモになるのは、
var addXML:XML = <member part={partStr}><name>{nameStr}</name></member>;
この部分です。
ここで実際に入力データを格納した変数から、XMLエレメントを生成してるのですが、その際XML表現の中に変数を使う場合は「{変数名}」とします。
もし、{}を使用しなかった場合、「partStr」や「nameStr」は普通に文字列として扱われて、下記のようなXMLエレメントになってしまいます。気をつけましょう。
<member part=partStr>
<name>nameStr</name>
</member>;
これで、XMLデータの動的な生成が出来ましたが、問題が残ってます。
このままだと、あずにゃんが何人も何人も、桜高校軽音部に入部できてしまいます。
それはいけません。
なぜなら僕らの生きがいに、あずにゃんは一人だけです。だからこそ可愛いのです。
それ以外にも、例えばコンボボックスにデータを再設定する際に、「その1」のやり方のまんまだと、あずにゃんを追加した場合に、Guitarの選択肢が2つ入ってしまったりといった残念が発生します。
てなわけで、次回はエレメントの有無をチェックしたり、ユニークチェックしたりとかそういう処理を紹介します。




コメントする