Flash CS3 のXML操作について。

下記の様に、元となる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);

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/01/30 20:15:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:xtra No.1

回答回数43ベストアンサー獲得回数1

ポイント60pt

僕もよくわかってませんが、以下のコードでノード追加はできました。

名前空間がキモのようです。

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

id:irhnhhtn

できました!

名前空間ですか・・・調べてみます。

ありがとうございました。

2008/01/24 14:29:30

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません