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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     XMLファイルのテキストフィールドへの読み込み
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
野中文雄
Åê¹ÆNo.45774
投稿日時: 2010-9-14 15:28
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: XMLファイルのテキストフィールドへの読み込み
第1に、「今何が起こっているのか」は理解されましたか?
var xmlObj:XML = 
	<word snd="T10101W0.wav" en="<span class='s33' id='e1'>appoint</span>">test</word>;
trace(xmlObj);
trace(xmlObj.toString());
trace(xmlObj.text());
trace(xmlObj.toXMLString());
var tests:XMLList= xmlObj.@en
trace(tests);
trace(tests.toString());
trace(tests.text());
trace(tests.toXMLString());

第2に、スクリプトはご自分で考えて書かれたものですか?URLLoader.dataプロパティのデータ型は何ですか?
引用:
yuki8さんは書きました:
問題は,@enとすると当然ですが<span class="s33" id="e1">appoint</span>の部分を取り出すことになってしまい,その中の単語に辿りつけないという点です。

T10101W0.wavは<span></span>で囲まれていないのでそのまま抜き出せるのですが。。。
変数enListの時すでに,指摘された通り属性enの文字列になっていてそこからはもう抜き出せないのでしょうか?


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

yuki8
Åê¹ÆNo.45775
投稿日時: 2010-9-14 16:13
新米
居住地:
投稿: 29
使用環境:
WindowsVista
Flash professional CS5
AS3.0
Re: XMLファイルのテキストフィールドへの読み込み
上のコードで起こったことは理解しています。


下ですが,スクリプトは本を読みつつ自分で書いたものです。
外部ファイル(XML)の内容URLLoader.dataプロパティを使って取り出すと書いてあったのでこのように使っています。

データ型はよくわかりません;
野中文雄
Åê¹ÆNo.45776
投稿日時: 2010-9-14 16:22
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: XMLファイルのテキストフィールドへの読み込み
リンク先のURLLoader.dataプロパティの説明は、ご覧になりましたか?そこからさらに「関連項目」をたどればおわかりいただけるとおり、URLLoader.dataFormatプロパティのデフォルト値はURLLoaderDataFormat.TEXTです。
引用:
dataFormatプロパティがURLLoaderDataFormat.TEXTの場合、受け取るデータは、ロードされたファイルのテキストを含むストリングです。

つまり、文字列(ストリング)をXMLオブジェクトに変換することは、すでにおできになっているということです。
 var xmlObj:XML = new XML(loader.data);

引用:
yuki8さんは書きました:
外部ファイル(XML)の内容URLLoader.dataプロパティを使って取り出すと書いてあったのでこのように使っています。

データ型はよくわかりません;


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

yuki8
Åê¹ÆNo.45779
投稿日時: 2010-9-14 16:42
新米
居住地:
投稿: 29
使用環境:
WindowsVista
Flash professional CS5
AS3.0
Re: XMLファイルのテキストフィールドへの読み込み
なるほど。詳しい説明ありがとうございます。


では,的外れな質問になってしまう気がしますが
	var xmlObj:XML = new XML(loader.data);
	var wordList:XMLList = xmlObj.section[0].word;
	var enList:XMLList = wordList.@en;
	//trace(enList);
	var tests:XML;	
	for(var i:int=0; i < enList.length(); i++){
		tests = enList[i];
		trace(tests.span);
	}

において,
tests.span ではなぜ英単語が取り出せなかったのでしょうか?
testsの型はXMLなので取り出せると思ったのですが;
<span class="s33" id="e1">appoint</span>はもうただの文字列になっているということでしょうか?



また,本にはアトリビュートの値を@hoge==""のようにして取り出せると書いてありました。
しかしXMLデータ内の値class="s33"を取り出すことができませんでした。
これは他の方が指摘されたようにXMLファイルのデータ構造に問題があるということでしょうか?

ひろゆき
Åê¹ÆNo.45780
投稿日時: 2010-9-14 17:04
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLファイルのテキストフィールドへの読み込み
var tests:String;
とお書きしたのですが。

提示されたスクリプトを単にコピー&ペーストするだけでなく、よくお読みください。


var tests:XML;
と宣言したからといって、XMLになるとは限らないのでは?


----------------
質問する際は、回答者に具体的な情報を与えてください。

野中文雄
Åê¹ÆNo.45785
投稿日時: 2010-9-14 17:53
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: XMLファイルのテキストフィールドへの読み込み
第1に、「<span class="s33" id="e1">appoint</span>」は属性enの値であり、「ただの文字列」です。「testsの型はXML」なのは、enという属性と文字列の値をもったXMLオブジェクトだからです。XMLオブジェクトですので、XMLクラスのプロパティやメソッドが使えます。
trace(tests.parent().toXMLString());

第2のご質問は、XMLオブジェクトに変換した属性idの値は取出せるのに、classについてはエラーが出るということですよね。それでしたら、「class」が予約語だからです。そのため、属性名は文字列にしなければなりません。
trace(tests.(@["class"] == "s33"));

引用:
yuki8さんは書きました:
tests.span ではなぜ英単語が取り出せなかったのでしょうか?
testsの型はXMLなので取り出せると思ったのですが;
<span class="s33" id="e1">appoint</span>はもうただの文字列になっているということでしょうか?



また,本にはアトリビュートの値を@hoge==""のようにして取り出せると書いてありました。
しかしXMLデータ内の値class="s33"を取り出すことができませんでした。
これは他の方が指摘されたようにXMLファイルのデータ構造に問題があるということでしょうか?


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

yuki8
Åê¹ÆNo.45789
投稿日時: 2010-9-14 18:41
新米
居住地:
投稿: 29
使用環境:
WindowsVista
Flash professional CS5
AS3.0
Re: XMLファイルのテキストフィールドへの読み込み
ひろゆきさん

申し訳ないです。
そのレスでは例として前に記述したスクリプトを書かせていただきました。


もちろんコピー&ペーストしたわけではなく読みながら書き直して理解しました。




野中文雄さん

引用:
「testsの型はXML」なのは、enという属性と文字列の値をもったXMLオブジェクトだからです。XMLオブジェクトですので、XMLクラスのプロパティやメソッドが使えます。


なるほど!
XMLオブジェクトですが文字列なので.spanや@id="e1"としても値を取り出せないのですね。
では最初の
var xmlObj:XML = new XML(loader.data);

における変数xmlObjから直接単語の部分だけを取り出すことは可能なのでしょうか?この状態ではただの文字列ではない気がするのですが。。



引用:
第2のご質問は、XMLオブジェクトに変換した属性idの値は取出せるのに、classについてはエラーが出るということですよね。それでしたら、「class」が予約語だからです。そのため、属性名は文字列にしなければなりません。


すみません;
説明不足でした。
classは予約語と知っていたのでattribute()を使っていました。
取り出すことができなかったのは属性idに関してもです。
野中文雄
Åê¹ÆNo.45791
投稿日時: 2010-9-14 19:00
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: XMLファイルのテキストフィールドへの読み込み
これまで、「指摘された通り属性enの文字列になっていてそこからはもう抜き出せない」のかというご質問にお答えしてきたつもりです。つまり、いまだに文字列(「<span class="s33" id="e1">appoint</span>」)をXMLオブジェクトに変換していないのが問題でしょう。やらなければならないのは、以下のことです。

[1]文字列、たとえば「<span class="s33" id="e1">appoint</span>」を取出す。
[2][1]をXMLオブジェクトに変換する。ここでURLLoader.dataを扱ったのと同じ手順を踏む。
[3][2]から<span>ノードの値の文字列を得る。

この期に及んで「xmlObjから直接単語の部分」を取出そうというのは、議論が振り出し以前に戻ってしまっています。
引用:
yuki8さんは書きました:
では最初の
var xmlObj:XML = new XML(loader.data);

における変数xmlObjから直接単語の部分だけを取り出すことは可能なのでしょうか?この状態ではただの文字列ではない気がするのですが。。
...[中略]...
classは予約語と知っていたのでattribute()を使っていました。
取り出すことができなかったのは属性idに関してもです。


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

yuki8
Åê¹ÆNo.45792
投稿日時: 2010-9-14 19:23
新米
居住地:
投稿: 29
使用環境:
WindowsVista
Flash professional CS5
AS3.0
Re: XMLファイルのテキストフィールドへの読み込み
失礼しました。
やるべき手順たいへんわかりやすいです。


	var tests:XML;	
	for(var i:int=0; i < enList.length(); i++){
		tests = enList[i];
		trace(tests);
	}

以前にコードの一部に上記のように記述をしました。

自分では[2]の手順の
引用:
[1]をXMLオブジェクトに変換する。

をしていたつもりでしたがXMLオブジェクトへの変換の仕方が違ったということですね。
(もちろんこれではできていても最後の<span class="s33" id="e10">dispute</span>だけになりますが)


URLLoader.dataを扱ったのと同じ手順というところをどのようにするかわかっていないので色々試してみます。

ありがとうございます。
yuki8
Åê¹ÆNo.45816
投稿日時: 2010-9-15 18:40
新米
居住地:
投稿: 29
使用環境:
WindowsVista
Flash professional CS5
AS3.0
Re: XMLファイルのテキストフィールドへの読み込み
お借りしたXMLですので編集させていただきます。
« 1 (2) 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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