下記の様に、元となるXML(baseXML)の特定のノードに新しいノード(newNode)を追加したいのですが、
特定のノードを指定したところでエラーが発生します。
テストで単純なXMLで同様の事を行った場合は上手く動くのですが、何が問題なのでしょうか?
var baseXML:XML =
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<library_geometries>
<geometry id="obj1-lib" name="obj1">
<mesh>
<source id="obj1-lib-positions" name="position">
<!-- ここに挿入したい -->
<technique_common/>
</source>
</mesh>
</geometry>
</library_geometries>
</COLLADA>
var newNode:XML = <float_array id="obj1-lib-positions-array" count="24">...</float_array>
var targetNode = baseXML.library_geometries[0].geometry[0].mesh[0].source[0]; // ここでエラーが出る。
targetNode = targetNode.insertChildBefore(targetNode.technique_common[0], newNode);
僕もよくわかってませんが、以下のコードでノード追加はできました。
名前空間がキモのようです。
http://www.adamrocker.com/blog/150/amazon_web_service_actionscri...
var baseXML:XML =
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<library_geometries>
<geometry id="obj1-lib" name="obj1">
<mesh>
<source id="obj1-lib-positions" name="position">
<technique_common/>
</source>
</mesh>
</geometry>
</library_geometries>
</COLLADA>
var newNode:XML = <float_array id="obj1-lib-positions-array" count="24">...</float_array>
var ns:String = "http://www.collada.org/2005/11/COLLADASchema";
default xml namespace = new Namespace(ns);
var targetNode = baseXML.library_geometries.geometry.mesh.source; // ここでエラーが出る。
//targetNode = targetNode.insertChildBefore(targetNode.technique_common[0], newNode);
targetNode.prependChild(newNode);
trace(baseXML);
できました!
名前空間ですか・・・調べてみます。
ありがとうございました。