XMLの名前空間を指定解除する場合の注意点

AS3.0では名前空間を持つXMLは、名前空間を使わないとアクセスできない。で、名前空間を指定した後クリアしていたんだけど、そのクリア方法に問題在り。nullでなくundefinedを使うこと。
nullだと次にXMLを使ったときに、namespaceの初期値が xmlns=”null” になってしまう。わからなくてさんざん悩んだ。ざっくりだけど、該当部分だけ貼っておきます。一番最後が問題だった箇所です。

//名前空間を抽出・保存(接頭辞で指定)
for (var i:int = 0; i<doc_xml.namespaceDeclarations().length; i++) {
switch (doc_xml.namespaceDeclarations()[i].prefix) {
case “” :
var ns_def:Namespace = new Namespace(doc_xml.namespace(doc_xml.namespaceDeclarations()[i].prefix));
break;
case “dc” :
var dc:Namespace = new Namespace(doc_xml.namespace(doc_xml.namespaceDeclarations()[i].prefix));
break;
case “rdf” :
var rdf:Namespace = new Namespace(doc_xml.namespace(doc_xml.namespaceDeclarations()[i].prefix));
break;
}
}

//名前空間のデフォルト値を設定

default xml namespace = ns_def;

//(XMLの処理)

//名前空間のデフォルト値を設定解除(ここはundefinedで。nullは不可)
default xml namespace = undefined;

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*