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

パスワード:


パスワード紛失

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

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yuki8
Åê¹ÆNo.45757
投稿日時: 2010-9-13 18:36
新米
居住地:
投稿: 29
使用環境:
WindowsVista
Flash professional CS5
AS3.0
XMLファイルのテキストフィールドへの読み込み
以下の外部XMLファイルを読み込もうとしています。

sample.xml
<vocdata Author="XXXXXXXXXXXXXXXXXX">
 <title application="Step Up Vocabulary" courseware="語学"/>
   <section img_a="T101a.jpg" img_s="T101s.jpg" section_title="<span class="s31" id="section1">会議</span>">
       <word snd="T10101W0.wav" en="<span class="s33" id="e1">appoint</span>" jp="<span class="s34" id="j1">指名する</span>"/>
       <word snd="T10102W0.wav" en="<span class="s33" id="e2">distribute</span>" jp="<span class="s34" id="j2">配布する</span>"/>
       <word snd="T10103W0.wav" en="<span class="s33" id="e3">agenda</span>" jp="<span class="s34" id="j3">協議事項</span>"/>
       <word snd="T10104W0.wav" en="<span class="s33" id="e4">conference</span>" jp="<span class="s34" id="j4">会議</span>"/>
       <word snd="T10105W0.wav" en="<span class="s33" id="e5">forum</span>" jp="<span class="s34" id="j5">公開討論会</span>"/>
       <word snd="T10106W0.wav" en="<span class="s33" id="e6">annual</span>" jp="<span class="s34" id="j6">年1回の</span>"/>
       <word snd="T10107W0.wav" en="<span class="s33" id="e7">attend</span>" jp="<span class="s34" id="j7">出席する</span>"/>
       <word snd="T10108W0.wav" en="<span class="s33" id="e8">committee</span>" jp="<span class="s34" id="j8">委員会</span>"/>
       <word snd="T10109W0.wav" en="<span class="s33" id="e9">approve</span>" jp="<span class="s34" id="j9">承認する</span>"/>
       <word snd="T10110W0.wav" en="<span class="s33" id="e10">dispute</span>" jp="<span class="s34" id="j10">論争</span>"/>
   </section>
   <section img_a="T102a.jpg" img_s="T102s.jpg" section_title="<span class="s31" id="section2">銀行,経済</span>">
       <word snd="T10201W0.wav" en="<span class="s33" id="e1">account</span>" jp="<span class="s34" id="j1">口座</span>"/>
       <word snd="T10202W0.wav" en="<span class="s33" id="e2">deposit</span>" jp="<span class="s34" id="j2">預金</span>"/>

・・・(同じような繰り返しなので以下省略)



この中の英単語の部分をテキストフィールドに以下のように会場された状態で順に読み込みたいと考えています。
appoint
distribute
agenda
conference
forum
annual
attend
committee
approve
dispute




そこで以下のようにコードを記述しました。

Read.fla
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onLoaded);
var urlReq:URLRequest = new URLRequest("sample.xml");

loader.load(urlReq);


function onLoaded(eventObj:Event):void{
	var xmlObj:XML = new XML(loader.data);
	var wordList:XMLList = xmlObj.section[0].word;
	var enList:XMLList = wordList.@en;

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

	}
	my_txt.text = tests.text();


	
}


この出力は
<span class="s33" id="e1">appoint</span>
<span class="s33" id="e2">distribute</span>
<span class="s33" id="e3">agenda</span>
<span class="s33" id="e4">conference</span>
<span class="s33" id="e5">forum</span>
<span class="s33" id="e6">annual</span>
<span class="s33" id="e7">attend</span>
<span class="s33" id="e8">committee</span>
<span class="s33" id="e9">approve</span>
<span class="s33" id="e10">dispute</span>



となったのですが,テキストフィールドにはなのも表示されませんでした;
最後の行の<span class="s33" id="e10">dispute</span>が表示されると思ったのですが・・・


また,tests.spanとすれば英単語が取り出せるかと思い試しましたが,何も出力されませんでした。





英単語の部分,または日本語訳の部分を抜き出すにはどうしたらよいのでしょうか?
よろしくお願いいたします。
ひろゆき
Åê¹ÆNo.45759
投稿日時: 2010-9-13 19:12
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLファイルのテキストフィールドへの読み込み
まず、質問されたものに回答がついているものを放置されるのは、いかがなものでしょう?

外部swfの読み込みについて
#ご自分が投稿した内容については、「アカウント情報」で確認できます。


次に、よく理解されていないのであれば、シンプルなもので確認されるべきでしょう。

そもそも、書かれているものを用意しても、エラーが吐き出されますが。
引用:
TypeError: Error #1095: XML パーサエラー :属性が終了していません。
at test_fla::MainTimeline/onLoaded()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()


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

野中文雄
Åê¹ÆNo.45760
投稿日時: 2010-9-13 20:27
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: XMLファイルのテキストフィールドへの読み込み
大切なのは、今何が起こっているのか問題を絞込むことです。'<span class="s33" id="e10">dispute</span>'というのは、属性enの値の文字列で、XMLデータではないでしょう。また、変数testsのデータ型は何ですか?
引用:
yuki8さんは書きました:
最後の行の<span class="s33" id="e10">dispute</span>が表示されると思ったのですが・・・

また,tests.spanとすれば英単語が取り出せるかと思い試しましたが,何も出力されませんでした。

英単語の部分,または日本語訳の部分を抜き出すにはどうしたらよいのでしょうか?
よろしくお願いいたします。

XMLデータはつぎのように書替えました(ただし、"&"は半角)。
<vocdata Author="XXXXXXXXXXXXXXXXXX">
	<title application="Step Up Vocabulary" courseware="語学" />
	<section img_a="T101a.jpg" img_s="T101s.jpg" section_title="&lt;span class='s31' id='section1'&gt;会議&lt;/span&gt;">
		<word snd="T10101W0.wav" en="&lt;span class='s33' id='e1'&gt;appoint&lt;/span&gt;"
			jp="&lt;span class='s34' id='j1'&gt;指名する&lt;/span&gt;" />
		<word snd="T10102W0.wav" en="&lt;span class='s33' id='e2'&gt;distribute&lt;/span&gt;"
			jp="&lt;span class='s34' id='j2'&gt;配布する&lt;/span&gt;" />
		<word snd="T10103W0.wav" en="&lt;span class='s33' id='e3'&gt;agenda&lt;/span&gt;"
			jp="&lt;span class='s34' id='j3'&gt;協議事項&lt;/span&gt;" />
		<word snd="T10104W0.wav" en="&lt;span class='s33' id='e4'&gt;conference&lt;/span&gt;"
			jp="&lt;span class='s34' id='j4'&gt;会議&lt;/span&gt;" />
		<word snd="T10105W0.wav" en="&lt;span class='s33' id='e5'&gt;forum&lt;/span&gt;"
			jp="&lt;span class='s34' id='j5'&gt;公開討論会&lt;/span&gt;" />
		<word snd="T10106W0.wav" en="&lt;span class='s33' id='e6'&gt;annual&lt;/span&gt;"
			jp="&lt;span class='s34' id='j6'&gt;年1回の&lt;/span&gt;" />
		<word snd="T10107W0.wav" en="&lt;span class='s33' id='e7'&gt;attend&lt;/span&gt;"
			jp="&lt;span class='s34' id='j7'&gt;出席する&lt;/span&gt;" />
		<word snd="T10108W0.wav" en="&lt;span class='s33' id='e8'&gt;committee&lt;/span&gt;"
			jp="&lt;span class='s34' id='j8'&gt;委員会&lt;/span&gt;" />
		<word snd="T10109W0.wav" en="&lt;span class='s33' id='e9'&gt;approve&lt;/span&gt;"
			jp="&lt;span class='s34' id='j9'&gt;承認する&lt;/span&gt;" />
		<word snd="T10110W0.wav" en="&lt;span class='s33' id='e10'&gt;dispute&lt;/span&gt;"
			jp="&lt;span class='s34' id='j10'&gt;論争&lt;/span&gt;" />
	</section>
</vocdata>

引用:
mayorさんは書きました:
そもそも、書かれているものを用意しても、エラーが吐き出されますが。
引用:
TypeError: Error #1095: XML パーサエラー :属性が終了していません。
at test_fla::MainTimeline/onLoaded()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()


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

yuki8
Åê¹ÆNo.45765
投稿日時: 2010-9-14 13:43
新米
居住地:
投稿: 29
使用環境:
WindowsVista
Flash professional CS5
AS3.0
Re: XMLファイルのテキストフィールドへの読み込み
すみませんいくつかコードが抜けていました。
これで実行するとエラーは出ませんでした。


import flash.net.URLLoader;
import flash.events.Event;
import flash.net.URLRequest;


var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onLoaded);
var urlReq:URLRequest = new URLRequest("sample.xml");

loader.load(urlReq);


function onLoaded(eventObj:Event):void{

	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 class="s33" id="e10">dispute</span>'というのは、属性enの値の文字列で、XMLデータではないでしょう。また、変数testsのデータ型は何ですか?



testsのデータ型もXMLです。


問題は,@enとすると当然ですが<span class="s33" id="e1">appoint</span>の部分を取り出すことになってしまい,その中の単語に辿りつけないという点です。

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




ちなみにXMLデータはお借りするものなので自分で書きかえることはできないです。


よろしくお願いいたします。
ひろゆき
Åê¹ÆNo.45766
投稿日時: 2010-9-14 13:51
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLファイルのテキストフィールドへの読み込み
引用:
yuki8さんは書きました:
すみませんいくつかコードが抜けていました。
これで実行するとエラーは出ませんでした。

いいえ、エラーはでます。

sample.xmlの内容を野中さんが指摘されたようなものに修正する必要があり、
それについて、明記すべきでしょう。


function onLoaded(eventObj:Event):void{
	var xmlObj:XML = new XML(loader.data);
	var wordList:XMLList = xmlObj.section[0].word;
	var enList:XMLList = wordList.@en;
	//trace(enList);
	var tests:String;
	for(var i:int=0; i < enList.length(); i++){
		tests = enList[i];
		trace(tests);
		my_txt.appendText(tests+String.fromCharCode(10));
	}
}


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

961832p
Åê¹ÆNo.45767
投稿日時: 2010-9-14 14:32
常連
居住地: Akiruno-shi
投稿: 155
使用環境:
 
:AS3:
- Adobe Flex SDK, Eclipse, AIR GEAR
- LB.Log AS3, Alcon2

:AS2:
- AMES(ASDT, MTASC, Eclipse, swfmill)
- Natural Entry Point Method
- LB.Log, Zeroi

Pro, Firefox, Chromium(Iron), IE

----------------
Pro,
Re: XMLファイルのテキストフィールドへの読み込み
 
XMLファイルのデータ構造に根本的な問題があるような気もしますが(汗)、変えられない場合は正規表現を使って、HTMLタグ以外の文字を取り出すのが手軽な方法かなと思いました。
 ・as3 正規表現 - Google 検索

引用:
yuki8さんは書きました:

問題は,@enとすると当然ですが<span class="s33" id="e1">appoint</span>の部分を取り出すことになってしまい,その中の単語に辿りつけないという点です。

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




ちなみにXMLデータはお借りするものなので自分で書きかえることはできないです。


----------------
:961832p:
- だんだんAS3に慣れてきた“なんちゃって”AMES使いの日曜プログラマー

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

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLファイルのテキストフィールドへの読み込み
こちらの方が手軽かな?
var list:Array = new Array();
function onLoaded(eventObj:Event):void{
	var xmlObj:XML = new XML(loader.data);
	var wordList:XMLList = xmlObj.section[0].word;
	var enList:XMLList = wordList.@en;
	//trace(enList);
	var tests:String;
	for(var i:int=0; i < enList.length(); i++){
		tests = enList[i];
		//trace(tests);
		//my_txt.appendText(tests+String.fromCharCode(10));
		my_txt.htmlText = tests;
		list.push(my_txt.text);
	}
	my_txt.htmlText = "";
	trace(list);
}


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

961832p
Åê¹ÆNo.45769
投稿日時: 2010-9-14 14:55
常連
居住地: Akiruno-shi
投稿: 155
使用環境:
 
:AS3:
- Adobe Flex SDK, Eclipse, AIR GEAR
- LB.Log AS3, Alcon2

:AS2:
- AMES(ASDT, MTASC, Eclipse, swfmill)
- Natural Entry Point Method
- LB.Log, Zeroi

Pro, Firefox, Chromium(Iron), IE

----------------
Pro,
Re: XMLファイルのテキストフィールドへの読み込み
 
なるほど、テキストフィールドをフィルタがわりに使うなんて面白くて確かに手軽ですね。勉強になります。


----------------
:961832p:
- だんだんAS3に慣れてきた“なんちゃって”AMES使いの日曜プログラマー

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

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLファイルのテキストフィールドへの読み込み
fladdict » FlashでHTMLテキストからタグを抜き取る方法


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

yuki8
Åê¹ÆNo.45773
投稿日時: 2010-9-14 15:27
新米
居住地:
投稿: 29
使用環境:
WindowsVista
Flash professional CS5
AS3.0
Re: XMLファイルのテキストフィールドへの読み込み
素早い返信ありがとうございます。




961832pさん

引用:
正規表現を使って、HTMLタグ以外の文字を取り出す


この方法は知らなかったのでこれから調べて試してみたいと思います。
ありがとうございます。


ひろゆきさん

具体的な方法をありがとうございます。
なるほど!htmlTextプロパティを使えばよかったのですね;

appoint,distribute,agenda,conference,forum,annual,attend,committee,approve,dispute

という出力が得ることができました。


また,無事にテキストフィールドに順に並べることができました。




質問に答えてくださった皆様ありがとうございました。
また質問する機会がありましたらよろしくお願いします。



かなり勉強不足なのでもっとがんばります;;
(1) 2 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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