[AS]XMLを更新したのにswfに反映されない場合(キャッシュ対策)

Xmlを読み込む際には、URLにユニークな変数を追加して、かならず再読み込みをさせたほうがいいみたい。
基本のURLのままだと、変更しても再読み込みの際、キャッシュから読んで新たに読み込んでくれない。

URL(String)にユニークな変数を追加する関数

import flash.net.LocalConnection;

//基本のURL
var xml_str:String = "http://hoge.com/hoge.xml";
//基本のURLにユニークな変数を追加
xml_str = setNoCashURL(xml_str);

private function setNoCashURL(url_str):String {
	//サーバーにあがってるか同かを調べるため
	var lc:LocalConnection = new LocalConnection();
	//現在のドメイン名を取得
	var domain_str:String = lc.domain;
	//ドメイン名がlocalhostの時はローカルでのテストなので変数はつけない。
	//(変数がついてるとローカルではxmlが読みこまれないみたい)
	if (domain_str != "localhost") {
		//現在時刻を取得することでユニークな数値を取得
		var noCash:Number = new Date().getTime();
		//URLに追加できる形にして数値を文字列化
		var noCash_str:String = "?nocash="+String(noCash);
	} else {
		noCash_str = "";
	}
	
	url_str += noCash_str;
	//変数を追加した文字列を返す
	return url_str;
}

[AS]XMLで要素数が何個あるかわからないデータを取得する時の方法 (for each ( in )の使い方) 

フレームアクションでこんな感じ。

var xml:XML = 
<sampleXML>
<test>まるいち</test>
<test>まるに</test>
<test>まるさん</test>
<test>まるよん</test>
<test>まるご</test>
</sampleXML>;

trace(xml);

var xmlArray:Array = new Array();

var sampleXMLList:XMLList = xml.test;

//配列にtest要素を突っ込む
for (var i:uint = 0; i< sampleXMLList.length(); i++) {
	xmlArray.push(xml.test[i]);
}
//配列の中身を確認
for (i = 0; i < xmlArray.length; i++) {
	trace("xmlArray その1 : "+xmlArray[i]);
}

//配列を空にする。
xmlArray = [];

//配列にtest要素を突っ込む
for each (var container:Object in xml.test) {
	xmlArray.push(container);
}
//配列の中身を確認
for (i = 0; i < xmlArray.length; i++) {
	trace("xmlArray その2 : "+xmlArray[i]);
}

プレビュー時の出力はこんな感じ

まるいち
まるに
まるさん
まるよん
まるご

xmlArray その1 : まるいち
xmlArray その1 : まるに
xmlArray その1 : まるさん
xmlArray その1 : まるよん
xmlArray その1 : まるご
xmlArray その2 : まるいち
xmlArray その2 : まるに
xmlArray その2 : まるさん
xmlArray その2 : まるよん
xmlArray その2 : まるご

注意するのは
Arrayの中身を数えるのは、Array.length
XMLListの中身を数えるのは、XMLList.length();
微妙に違うところ。

あとfor each (in)分を使えば、データの数がわからなくとも、データがあるだけループさせられる。

[AS]読み込んだXMLの内容を改行したときに余分な改行があった場合

読み込んだXMLをTextFieldに表示させるときに、
XML側では、こんな感じで書くとその中の改行がそのまま表示できる。

<?xml version="1.0" encoding="UTF-8"?>
<sample>
<description>
<![CDATA[あかさなた
はまやらわ]]>
</description>
</sample>

ただその際に改行コードの問題で、一回しか改行してないつもりでも2行で改行されてしまうときがある。

↓こうでてほしいのに
あかさなた
はまやらわ

↓こうなる
あかさなた

はまやらわ

Windowsの改行コードの問題なので、
xmlから読み込んだストリングの改行コードを変換してあげればOK

//xmlから読み込んだストリングの
var strictDescription:String = xml.description[0];
//改行コードを\nに統一する。
strictDescription = strictDescription.replace(/\r\n/g, '\n');

[AS]XMLとXMLListについて

//XMLからノードを抜き出したものがXMLListとなるらしい。

//抜き出したノードはXMLListに代入できる

var xml:XML=
<data1>
<node>Node1</node>
<node>Node2</node>
</data1>;
var xmllist:XMLList = new XMLList();
xmllist = xml.node;

//でもXMLに代入はできない。

var xml:XML=
<data1>
<node>Node1</node>
<node>Node2</node>
</data1>;
var xml1:XML = new XML();//XMLではダメ。
xml1 = xml.node;

//2008/1/15追記
//これならXMLとなる

xml1 = xml.node[0];