投稿者 |
スレッド |
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
という出力が得ることができました。 また,無事にテキストフィールドに順に並べることができました。 質問に答えてくださった皆様ありがとうございました。 また質問する機会がありましたらよろしくお願いします。 かなり勉強不足なのでもっとがんばります;;
|
|
|