• ベストアンサー

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

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

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

  • ベストアンサー
  • 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