人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: irhnhhtn
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Flash XML エラー テスト ノード
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● xtra
●60ポイント

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

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

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

◎質問者からの返答

できました!

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ