トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     AS3のE4XにおいてXMLに一回しか出現しない空要素の取り出し
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
t-azuma
Åê¹ÆNo.45633
投稿日時: 2010-9-4 0:26
新米
居住地:
投稿: 15
使用環境:
Windows7 HomePremium
自作機
Flash2?FlashCS5 Pro
FireFox 3.6
IE 8
AS3のE4XにおいてXMLに一回しか出現しない空要素の取り出し
みなさま、こんにちは
久しぶりにFlashを扱っているのですがXMLの解析で一回しか出現しない空要素の取得で不可解な動作に難儀しており、お知恵を拝借できますでしょうか。

問題のコードはこんな感じです。
var xml:XML =
<script>
<config dataDir="data/" imageDir="data/" />
<scene id="0" bgImage="background.png">
<iconList>
<icon file="btn1.png" />
<icon file="btn2.png" />
</iconList>
</scene>
</script>
trace("==============\n"+xml["config"]+"\n==============");

実行すると
==============
<config dataDir="data/" imageDir="data/" />
==============
こうなる事を期待しているのですが
実際の実行結果はこうなります。
==============

==============

また、この現象の不可解な点は「config」タグを二つにして実行すると
var xml:XML =
<script>
<config dataDir="data/" imageDir="data/" />
<config dataDir="data/" imageDir="data/" />
<scene id="0" bgImage="background.png">
<iconList>
<icon file="btn1.png" />
<icon file="btn2.png" />
</iconList>
</scene>
</script>
trace("==============\n"+xml["config"]+"\n==============");

実行結果
==============
<config dataDir="data/" imageDir="data/"/>
<config dataDir="data/" imageDir="data/"/>
==============

となる事です。

XMLやE4Xの仕様に詳しくないんですけど、要素の数によってアクセス出来たりできなかったりって正しい動きなのでしょうか。

また正しいとすると「一回しか出現しない空要素の取得」の方法が別にあると思うのですが、分かる方がいらっしゃったらお教えいただけますでしょうか。
野中文雄
Åê¹ÆNo.45634
投稿日時: 2010-9-4 0:54
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: AS3のE4XにおいてXMLに一回しか出現しない空要素の取り出し
アクセスはできていると思いますよ。ただ「空要素」なので、文字列表現になったとき、空文字列("")になっているだけではないでしょうか。
引用:
t-azumaさんは書きました:
問題のコードはこんな感じです。
var xml:XML = 
<script>
  <config dataDir="data/" imageDir="data/" />
  <scene id="0" bgImage="background.png">
    <iconList>
      <icon file="btn1.png" />
      <icon file="btn2.png" />
   </iconList>
  </scene>
</script>
// trace("==============\n"+xml["config"]+"\n==============");
var myXML:XMLList = xml["config"];
trace(myXML.@dataDir);
trace(myXML.toXMLString());


実行すると
==============
<config dataDir="data/" imageDir="data/" />
==============
こうなる事を期待しているのですが
実際の実行結果はこうなります。
==============

==============
...[中略]...
XMLやE4Xの仕様に詳しくないんですけど、要素の数によってアクセス出来たりできなかったりって正しい動きなのでしょうか。


----------------
 

t-azuma
Åê¹ÆNo.45635
投稿日時: 2010-9-4 1:37
新米
居住地:
投稿: 15
使用環境:
Windows7 HomePremium
自作機
Flash2?FlashCS5 Pro
FireFox 3.6
IE 8
Re: AS3のE4XにおいてXMLに一回しか出現しない空要素の取り出し
>アクセスはできていると思いますよ。ただ「空要素」なので、文字列表現になったとき、空文字列("")になっているだけではないでしょうか。

なるほど、確かにtoXMLString()すれば見えますね。
2つ以上出現するとtraceに出てくると言うのもtraceの引数に自動で掛かるのがtoString()で、XMLクラスやXMLListクラスで単純内容と複合内容では挙動が違う事が原因なら納得できるような気がします。

深夜にもかかわらず、ご回答ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops