Action ScriptでXMLを扱う際に使うのがXMLオブジェクトです。
サーバーとの間でXML形式でのデータの送受信ができます。
XMLオブジェクトは、new XML()によって生成されます。
mikey_xml = new XML();
mikey_xml = new XML("<person><name>マイキー</name><name><name>エミリー</name><name>ローラ</name></person>");
| attributes | 属性名を要素とする配列 |
|---|---|
| childNodes | 子ノード名を要素とする配列 |
| firstChild | 最初の子ノード |
| lastChild | 最後の子ノード |
| nextSibling | 次のノード |
| previousSibling | 前のノード |
| nodeName | ノード名 |
| nodeType | ノードタイプ |
| nodeValue | ノードの値 |
| perentNode | 親ノード |
| ignoreWhite | XMLデータ内の空白文字・改行を無視 |
| xmlDecl | XML宣言 |
| docTypeDecl | DOCTYPE |
| contentType | データを送信するときのMIMEタイプ |
| loaded | データの読み込みが終了したかどうか |
| status | XMLデータが正常に読み込まれたかを解析 |
XMLオブジェクトのプロパティを使ってノードを参照します。
mikey_xml = new XML("<person><name>マイキー</name><name>エミリー</name><name>ローラ</name></person>");
trace(mikey_xml.firstChild.firstChild.firstChild.nodeValue); // マイキーと表示
trace(mikey_xml.firstChild.firstChild.nextSibling.firstChild.nodeValue); // エミリーと表示
trace(mikey_xml.firstChild.childNodes[2].firstChild.nodeValue); // ローラと表示
trace(mikey_xml.firstChild.childNodes.length); // ノードの数(3)を表示
| appendChild() | 親ノードの最後に子ノードを追加 |
|---|---|
| insertBefore() | 指定した子ノードの一つ前に子ノードを追加 |
| removeNode() | 指定したノードを削除 |
| cloneNode() | ノードの複製を作成 |
| createElement() | XMLノードを作成 |
| createTextNode() | XMLテキストノードを作成 |
| hasChildNodes() | 子ノードがあるかどうか |
| parseXML() | 文字列をXMLデータとして読込 |
| toString() | XMLデータを文字列に変換 |
| addRequestHeader() | HTTPリクエストヘッダの値を設定 |
| load() | URLからXMLデータを読込 |
| send() | URLにXMLデータを送信 |
| sendAndLoad() | URLにXMLデータを送信し、戻り値を読込 |
| getBytesLoaded() | 読み込まれたデータの量 |
| getBytesTotal() | 読み込むデータの量 |
createElement(), createTextNode()を使ってノードを作成します。 作成したノードやテキストノードはappendNode()やinsertNode()を 実行するまではどのノードにも属しません。
XMLオブジェクト.createElement(作成するノード名); XMLオブジェクト.createTextNode(テキスト);
appendChild(), insertBefore()を使ってノードを追加します。
XMLオブジェクト.appendChild(追加するノード); XMLオブジェクト.insertBefore(追加するノード, 追加するノードの位置);
removeNode()を使ってノードを削除します。
XMLオブジェクト.removeNode();
mikey_xml = new XML("<person><name>マイキー</name><name>エミリー</name><name>ローラ</name></person>");
mikey_xml.firstChild.childNodes[2].removeNode(); // ローラを削除
trace(mikey_xml);
tonyNode = mikey_xml.createElement("name");
tonyTextNode = mikey_xml.createTextNode("トニー");
charlesNode = mikey_xml.createElement("name");
charlesTextNode = mikey_xml.createTextNode("チャールズ");
mikey_xml.firstChild.appendChild(tonyNode); // 末尾にトニーを追加
tonyNode.appendChild(tonyTextNode);
mikey_xml.firstChild.insertBefore(charlesNode, mikey_xml.firstChild.firstChild); // 頭にチャールズを追加
charlesNode.appendChild(charlesTextNode);
trace(mikey_xml);
load()を使ってXMLファイルからXMLデータを読み込みます。
XMLオブジェクト.load(URLアドレス);
サンプルXMLファイル GG.xml
<?xml version="1.0" encoding="Shift_JIS" ?>
<characters>
<character>
<name>SOL BADGUY</name>
<bloodtype>unknown</bloodtype>
</character>
<character>
<name>KY KISKE</name>
<bloodtype>AB</bloodtype>
</character>
</characters>
読込スクリプト
GG_xml=new XML(); GG_xml.ignoreWhite=true;// 空白・改行を無視GG_xml.load("GG.xml");// XMLファイル名を指定して読込みGG_xml.onLoad = function () {// 読込が終了したらtrace(GG_xml.xmlDecl);// XML宣言を表示trace(GG_xml.firstChild);// XMLデータの中身を表示}
Programming Laboratory (Shio seminar)