• ベストアンサー

XMLの&が&に変換されない

FlashにXMLを読み込むとエスケープの「&」が「&」に変換されず 「&」のままになってしまいます。 「&」だけにしても「&」に変換されてしまいます。 getURL内およびテキストフィールドで使おうとしています。 「&」を表示するにはどうしたらよいのでしょうか? MacOS 10.4、Flash8、XMLは文字コードUTF-8 / LFです。 よろしくお願いいたします。

  • Flash
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

nodeValue(ノード値) が抜けているのではないでしょうか? ---例--- 外部 XML 「data.xml」 を用意 ---------------------------------- <?xml version="1.0" encoding="UTF-8"?> <piano> <mod maker="Steinway &amp; Sons">S&amp;S</mod> </piano> ---------------------------------- 「data.xml」と同じ階層の FLA のフレーム1 にコピペ ---------------------------------- for (var i:Number = 0; i<=2; i++) { // _txt0 ~ _txt2 というテキストフィールドを作成 _root.createTextField("_txt"+i, i, 5, 30*i+5, 1, 1); // 枠線を表示 _root["_txt"+i].border = true; // 自動サイズ _root["_txt"+i].autoSize = true; } // XMLインスタンスの作成 var myXML:XML = new XML(); // 余分な空白などを削除 myXML.ignoreWhite = true; // XMLデータロード時の動作定義 myXML.onLoad = function() { var _node:XMLNode = this.firstChild.firstChild; // _txt0 ~ _txt2 に ロードした XMLデータを表示 _txt0.text = _node.attributes.maker; _txt1.text = _node.firstChild.nodeValue; _txt2.text = _node.firstChild; // 念のため出力 trace(_node.attributes.maker); trace(_node.firstChild.nodeValue); trace(_node.firstChild); }; // 外部 XML 「data.xml」 のロード myXML.load("data.xml"); ----------------------------------  → そして「制御」→「ムービープレビュー」 結果: 上のテキストフィールド には 「Steinway & Sons」 が表示され, 中のテキストフィールド には 「S&S」 が表示され, 下のテキストフィールド には 「S&amp;S」 が表示されます。 また出力窓には, Steinway & Sons S&S S&amp;S が出力されます。 手動でテキストフィールドを作成してもても同じ結果です。 ~参考URL(非参考URL)~ Flashドキュメンテーション (Flash8のヘルプ) 「nodeValue (XMLNode.nodeValue プロパティ)」 http://livedocs.adobe.com/flash/8_jp/main/00002898.html > firstChild を使用してノードの内容を表示した場合は、 > &amp; エンティティが保持されます。 > しかし、明示的に nodeValue を使用した場合は、 > アンパサンド文字 (&) に変換されます。 ↑※なおこのURL,日本語は良いのですが,   該当箇所のサンプルコードは変です。   どうみてもXMLデータが変です。   オフラインのヘルプも同様に変です。   英語版の同じページも変でした。  (英語版は"出力されない"という指摘がついています。) 調べてみますと1行目はこう↓ではなく, var my_xml:XML = new XML("mortongood&evil"); 実はこう↓したかったようです。 var my_xml = new XML("<login><username>morton</username><password>good&amp;evil</password></login>"); これで無事に以下のものが出力されます。  using firstChild:    morton    good&amp;evil  using firstChild.nodeValue:    morton    good&evil ・ActionScript 2.0 リファレンスガイド parentNode (XMLNode.parentNode プロパティ) のページ ・Flash Lite 2.x ActionScript リファレンスガイド nodeValue (XMLNode.nodeValue プロパティ) のページ parentNode (XMLNode.parentNode プロパティ) のページ の各サンプルコードも同じ箇所が変です。 XMLに上のようなデータが入るという答えは, Flash Media Server 英語版のヘルプにありました↓。 Flash Media Server 「XML.nodeValue」 http://livedocs.adobe.com/fms/2/docs/00000825.html (ご質問に回答するより,この件について考えたり突きとめたりする方に労力を使ってしまった...。)

ryotar
質問者

お礼

とても詳しくありがとうございます。 実は自己解決してしまいました。 xpath4as2を使っていて、selectNodes()をselectNodesString()にしたら大丈夫でした。 StringじゃなくてObjectになっていたのです。 質問が悪かったです。失礼しました。 しかしfirstChildで変換されないというのははじめて知りました。 詳しいご説明ありがとうございました。

関連するQ&A

  • XMLを読み込むタイプのFlashコンポーネントで日本語が使えない

    【環境】 Win XP sp2 Flash8Pro ////////////// //質問です。 メニューバーFlash componentで メニューのTEXTをXMLより読み込んでswfにて表示させるコンポーネントがありまして 文字コードはUTF-8なのですが、 XMLファイルに表示させたいメニューTEXTを 日本語にて入力しても、SWFに表示されません。 XMLファイルのヘッドの部分のエンコーディングを Shift_JIS変えてもだめでした。(Flash8はUTF-8ですよね) ↓(この部分) <?xml version="1.0" encoding= "UTF-8" ?> 以前にどこかのサイトで、同じ方式でちゃんと日本語表示が出来ていたのを確認したので 1年くらいずっと粘ってみましたが、解決策を見つけ出す事ができませんでした。 解決策をご存知の方は、教えて頂けませんでしょうか。 どうぞよろしくお願い致します。

  • XMLから読み込みで

    XMLファイルからFlashで文字を表示するという事をしています。 ですが表示させると全角日本語の『を』という文字だけが 表示されません。 XMLファイルはUTF-8で記載されていますが 他の全角日本語は表示されます。 Flashのテキスト表示エリアのフォントは『MS UI Gothic』と なっております どなたかおわかりになられる方、ご指導の程宜しくお願い致します。

  • 「"」、「&」が文字化けしてしまいます

    「"」が&quot、「&」が&ampに文字化けしてしまいます。 ネットの小説をテキストファイル(UTF-8)に変換してダウンロードしたのですが、ファイルを開くと上記のような状態になってしまいました。 HTMLのことや文字コードのこと、メタ文字やエスケープのことも調べたのですが、いまひとつ理解できません。他の部分は普通に読めるので、「"」、「&」だけを変換したいのですが、そういうことができるソフトや方法はないでしょうか。 アドバイスよろしくお願いします。

  • xml内での分岐について

    はじめまして。 今初めてxmlを使った作業をしています。 以下はDBからデータを抽出したデータをcsvファイルとして出力するものです。 <report> <source>%xxxxxxxID%</source> <data-type encode='UTF-8' header='yes'>csv</data-type> <page break='0'> <field name='kekka'>&amp;source(0)</field> -----> 値は"1"または"2" <field name='namae'>&amp;source(1)</field> <field name='bymd'>&amp;source(2)</field> </page> </report> 例えば 「&amp;source(0)」 の値が"1"の時は「済」、"2"の場合は「未」を'kekka'にセットするような 分岐は可能なのでしょうか? 初歩的な質問かもしれませんが、よろしくお願いいたします。

    • 締切済み
    • XML
  • XMLデータの変換

    C#で作業を行っております。XMLデータをあるテキストファイルデータ(独自フォーマット)への変換プログラムを作成予定です。 JAVAのVelocityのようなテンプレートベースの変換ができるクラスはC#にあるのでしょうか。 XML用のクラスでデータを読み込み、独自フォーマットのテキスト出力用のコードはゴリゴリと書いていかなければならないのでしょうか?(←これを避けたいのです) スマートな方法をご存知でしたら、お教えください。

    • 締切済み
    • XML
  • 外部テキストで&amp;を表示させるにはどうすればよいでしょう?

    外部テキスト(.txt)のなかで、リンク先のURLを指定しているのですが、URLに &amp;  が含まれているため、flash側がそこで変数の切り替えと認識してしまい、正しく読み込むことができません。 xmlのものに作り替える以外に方法はないものでしょうか?  ご教授よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • C++を使った汎用性のあるXML変換プログラム

    現在WindowsXP,VC++2008,でXMLの変換プログラムを作っています。XMLのパーサはxerces3.0.1をビルドしました。 JAVAなら少々経験がありますが、C++は初めてです。 要望として、日本語以外のOSやLINUX類でもできるだけそのまま動かせるよう留意してほしいと言われたのですが、具体的にどうやって気をつければよいのか思案中です。 まず、テキストファイルを辞書として読み込むので、その文字コードとか問題になるのかなと思います。今はShift-jisで何の変換もなくUTF-8のXML変換ができていますが、xercesに変換関数があるからです(おそらく内部はUnicode)。LINUXにしたらeuc-jpだし、欧州だとまたちがうだろうから、どのように辞書を定義するのがよいのかわからなくて困っています。 文字コード変換ライブラリにICUというのがあるところまでは調べましたが、これをどう変換に活かせばos,言語環境に依存しにくいプログラムがつくれるのかよくわかりません。 あと、いろいろ検索していると、windows系でしか働かない関数やunix系のものとかもいろいろあるのですね。これら、どの関数が使えてどれがこっちでは使えないですとかの情報はどうやったら手に入るのでしょう?ひとつひとつの関数を検索するしかないでしょうか。 漠然とした疑問でほんとうに恐縮ですが、ご意見、参考サイトなどお持ちの方、どうぞ教えてください。

  • LINQでXML

    質問の内容がまとまっていないかもしれません。 質問内容としては、LINQでXMLを利用する際のエスケープ文字についてです。 XMLのタグ(「<」「>」で挟み記述する文言)を一旦「:」や「;」などのエスケープ文字に置換すると思うのですが、エスケープ文字に変換する範囲を教えてほしいのです。 <~>までのすべての文言なのか、それとも一部のみなのかが不明です。 説明が不十分であったり、質問の内容が的を得ていないかもしれませんが、どなたかご存知の方いらっしゃいましたらお願いします。 また、根拠となる情報源なども教えていただけると幸いです。

  • UTF8への変換について

    XMLをシフトJISで、作成しています。 このXMLから、XSLTを通して、UTF-8のHTMLを作成することは、 可能でしょうか? XSLTで、文字コードの変更は出来るのでしょうか? やはり、シフトJISのHTMLを作成した後で、UTF-8に変換する方法でしょうか?

    • ベストアンサー
    • XML
  • メモ帳で保存した日本語テキストや日本語XMLをJavaで読込、保存。メモ帳での保存文字コードはなにが推奨されるでしょうか?

     Windows9x系ではないWindowsVistaやXP、NT、2000のメモ帳(Unicodeのbig endianは保存できるがおそらくUnicodeのbig endianでのBOMなし保存不可。UTF-8は保存できるがUTF-8でのBOMなし(UTF-8N)の保存不可。Unicodeのlittle endianは保存できるが仕様なので言うまでもないがUnicodeのlittle endianでのBOMなし保存不可。)で保存した日本語テキストや日本語XMLをJavaで読込、保存。メモ帳での保存文字コードはなにが推奨されるでしょうか? やはりJavaのString型に近いUnicode big endianがよいのでしょうか? それともJava側で自動認識してくれるのでしょうか? XMLの場合は1行目でそのXMLファイルが使用している文字コードが何か宣言しますよね。 でもテキストファイルだと文字コードを宣言する場所がないみたいですし・・・(ここでの文字コードを宣言する場所としてはBOMは例外ですよ 念のため) 補足:メモ帳だとUnicode big endianで保存すると必ずBOMが付くみたいです。 メモ帳はLF改行が使えません。CR+LF改行のみ対応です。

    • ベストアンサー
    • Java

専門家に質問してみよう