ActionScript -- サーバからXML形式でデータを受け取った時の注意点
サーバからXML形式でデータを受け取ると、ResultEventのresultプロパティに
オブジェクトとして結果を自動で格納してくれるのは良いがその仕様(XMLからオブジェクトへの変換)は、
デフォルトでは「先頭および最後の空白文字を、解析時に無視する」ようになっていることに注意!
つまり、nullで返ってくると想定しいたノードが、実は省略されていて
想定より少ないノード数になっていることがある。
例えば、以下のようなXMLがサーバから返ってきたとする。
<?xml version="1.0" encoding="UTF-8"?> <data> <return> <item /> <item /> <item>最後データ</item> </return> </data>
ResultEventのresult(array)に格納されているreturn配下のノード数は1個で、先頭の空白ノード2つは無視される。
(event.result.data.return[2] で値を取得することはできない)
空白行を無視しない方法
例は以下のとおり
private function httpreturn(e:ResultEvent):void{ XML.ignoreWhitespace = false; //空白無視をやらない var resxml:XML = new XML(e.message.body); var hoge:Array = new Array(); //XML to Array for each(var tg:XML in resxml.return.item){ hoge.push(tg.toString()); } }
最後に
もっとスマートな方法(XML操作をしないやり方)がないか?を調べたけど見つかりませんでした。
良い方法があれば、教えていただけると幸いです。