- 2008年09月03日 (水)
- Tweet
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); }
発想の元ネタはこちら
- Remove Annoying XML Namespaces in Flex/AS3 « Got RIA?
- fladdict» ブログアーカイブ » AS3 XMLにネームスペースがあると普通には値が取得できない
2010年08月14日(土) 12:55
[…] 1.Namespaceオブジェクトを使う方法 2.デフォルト名前空間をつかう方法(上記と同じ方) 3.QNameを使う方法 4.ネームスペースを削除されたXMLにするバッドノウハウ […]