AS3でXMLの名前空間を削除する

俗にいう、ActionScript3.0のXMLにおけるNameSpace(名前空間)問題。名前空間を扱うには正攻法でいえばQNameを使う方法デフォルト名前空間などがありますが、バッドノウハウともいえる正規表現で名前空間自体を削除してしまう方法を試してみました。

汎用メソッド

URLLoaderやHTTPServiceで読み込んだテキストファイル(String型)のXMLを引数に渡すとネームスペースを削除されたXMLを返します。

/**
 * 名前空間を削除します
 * @param	オリジナルストリング(XML形式)
 * @return	namespace宣言を取り去ったXML
 */
private function deleteNameSpace(xmlText:String):XML
{
	// remove the namespaces from the string representation of the XML
	xmlText = xmlText.replace(new RegExp("xmlns[^\"]*\"[^\"]*\"", "gi"), "");
	xmlText = xmlText.replace(new RegExp("xsi[^\"]*\"[^\"]*\"", "gi"), "");

	// set the string rep. of the XML back to real XML
	return new XML(xmlText);
}

発想の元ネタはこちら

    コメントする

    [告知] 最近書いた書籍の紹介

    Flash に関する解説本を書いてます。ブログよりも充実した解説でまとめているので、よければどうぞご覧ください。

    [告知] ハンドオンセミナーのお知らせ

    FlashのフレームワークProgressionの入門講座を開講しています。集中的にProgressionを学習したい方はどうぞご受講くださいませ。
    » 詳細を確認する

    コメント/トラックバック %件

    コメントを残していく