FlashでXMLファイルを読み込む

FlashでXMLファイルを読み込む方法です。 記述するコードはこのようなものになります。

objXML = new XML(); 
objXML.load("test.xml");
objXML.onLoad = XMLLoaded;
objXML.ignoreWhite = true;
 
function XMLLoaded(success) {
  if (success == true) {
     rootNode = objXML.firstChild;
     totalLength = rootNode.childNodes.length;
     firstNode = rootNode.firstChild;
     currentNode = firstNode;

		AdreList=XML2List();
		ShowList();

  } else {
     trace("読み込みに失敗しました");
  }
}

function XML2List() {
  var elementNodes = objXML.firstChild.childNodes;
  var elementList = new Array();
  for (eleNum in elementNodes) {
    elementList[eleNum] = new Object();
    var dataNodes = elementNodes[eleNum].childNodes;
    for (dataNum in dataNodes) {
      var curData = dataNodes[dataNum];
      elementList[eleNum][curData.nodeName] = curData.firstChild.nodeValue;
    }
  }
  return elementList;
}


function ShowList() {
  var eleNum;
  var dataName;
  for (eleNum in AdreList) {
  trace("----"+eleNum+"番目の内容");
    for (dataName in AdreList[eleNum]) {
      trace(dataName+":"+AdreList[eleNum][dataName]);
    }
  }
}
 

では、順に説明して行きましょう。

FlashでXMLファイルの読み込みには3つのステップが必要です。

ステップ1
XMLオブジェクトを作ります。ここではオブジェクト名をobjXMLとします。

objXML = new XML(); 

ステップ2
読み込むXMLファイル名またはファイルがあるURLを指定します。ここでは、同じディレクトリにあるtest.xmlを読み込みます。

objXML.load("test.xml"); 

ステップ3
XMLファイルの読み込みが完了したときに呼び出すハンドラを指定します。ここではXMLLoadedハンドラを呼び出すことにします。

objXML.onLoad = XMLLoaded;

これで、flashファイルと同じディレクトリにある[test.xml]を読み込み、読み込みが完了するとXMLLoadedハンドラを実行するようになります。

objXML.ignoreWhite = true;

これは、XMLファイルにあるタブや改行コードを無視する設定です。多くの場合、XMLファイルは読みやすいように改行したり、インデントされています。しかし、 デフォルトではこれらの文字は意味のあるものとして扱われ、情報を引き出すとき、予期しない結果になってしまいます。これを防ぐためにignoreWhiteプロパティをtrueにしておきましょう。


次に呼び出されるハンドラを用意します。この部分は必要な内容を記述します。

function XMLLoaded(success) {
if (success == true) {
rootNode = objXML.firstChild;
totalLength = rootNode.childNodes.length;
firstNode = rootNode.firstChild;
currentNode = firstNode;
AdreList=XML2List(); ShowList();
} else { trace("読み込みに失敗しました"); } }

変数 success には、 ファイルの読み込みが成功するとtrueが、失敗するとfalseが入っています。

 rootNode = objXML.firstChild;

情報を取り出す場合、根元となるルートノードを取得する必要があります。

 totalLength = rootNode.childNodes.length;

ルートノードに含まれる子ノードの数を取得します。

 currentNode = rootNode.firstChild;

最初の子ノードを取得します。

function XML2List() {

XML2Listは、情報の内容を配列に返す関数です。AdreList[0]["住所"]には1番目の住所の内容、つまり「練馬区」が格納されます。

function ShowList() {

情報の一覧を確認する関数です。


XMLファイルの注意

  • 2バイトコードを使うときは必ず文字コードをUTF-8に変換します。
  • 全角スペース、−(全角のハイフン)を使ってはいけません。
<住所録>
 <データ>
  <名前>高橋愛子</名前>
  <生年月日>19850402</生年月日>
  <住所>練馬区</住所>
 </データ>
 <データ>
  <名前>西孝子</名前>
  <生年月日>19820630</生年月日>
  <住所>大田区</住所>
 </データ>
 <データ>
  <名前>広瀬美穂</名前>
  <生年月日>19791219</生年月日>
  <住所>渋谷区</住所>
 </データ>
</住所録>

ファイル更新日:2005年08月19日