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);
}

発想の元ネタはこちら

    投稿者 : 池田 泰延

    BookMark

    いかがでしたでしょうか、ブックマークはこちらからどうぞ。

    このエントリーをはてなブックマークに追加

    Comment/Trackback %件