• 締切済み

FireFoxにてPHPで生成したをXML表示するには?

PHPにてXML文書を生成して、それをXMLデータを読み取るFlashにデータを渡す処理を作成しました。 そこで、作成されるXML文書を確認するため、 IE7にて、http://hoge.ne.jp/xml.phpと入力してXMLのツリー上になっていることを確認しました。 ですが、ブラウザをFireFoxに切り替えたら文字化けされた(?)文書が表示されるのみです。 ためしに生成されたソースをそのまま、サーバに上げたらツリーが表示されました。 FireFoxでもIEと同様にXMLをツリー形式で見るにはどのようにしたらいいのでしょうか? 出来るなら、ブラウザ関係なく見れるのが好ましいですが、 最低限FireFoxだけでもいいので表示したいと思っています。 わかる方がおられたらご教示ください。 以上、よろしくお願いします。

みんなの回答

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

エンコーディングの指定がされてないんじゃない? http://www.google.co.jp/search?q=xml%20%E6%96%87%E5%AD%97%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E6%8C%87%E5%AE%9A&hl=ja&lr=lang_ja エンコーディング指定してるのに化けるというならphp側の内部コードが変なのかもしれない それを確認して正しいというなら元になっているテキスト自体のエンコーディングが正しくないんじゃないかな それぞれ調べてみて

nyororo-n
質問者

お礼

回答ありがとうございます。 補足に書いたとおり、自己解決出来ました。 URLのところは、時間が出来たら見直そうと思います。

nyororo-n
質問者

補足

すみません、URLの先の書いていることがわかりませんでした。 ですが、調べているうちにサンプルがあり、自己解決出来ました。 現状のソースが ================== <?php echo "<?xml version=\"1.0\" encoding=\"shift-jis\" ?> <?xml-stylesheet href=\"a.xsl\" type=\"text/xsl\" ?> <zaiko> <hardware> <item-no>00001</item-no> <item-kata>SKC-N1866</item-kata> <item-name>ノートパソコン</item-name> </hardware> </zaiko>"; ?> ================== だったものに、 header("Content-Type: text/xml; charset=shift-jis"); をつけたら動きました。

関連するQ&A

  • [PHP+XML]PHPで動的に出力するXMLをどのようにして読み込めばいいでしょうか?

    こんにちは、どうしても解決ができなくて困っています。 お助け願います。 DBからデータを取得し成形するなどした結果をXMLで出力できるようにPHPを用意しました。 ブラウザから確認でき、XMLをソース表示しても問題ありません。 次にこれを読み込むPHPを書いています。 simplexml_load_fileなどでXMLファイルを開くことはこれまでにもやっていたので、直接XMLファイル名を記述するところに用意したPHPを指定しました。 結果はエラー。 いろいろ検証した結果、PHPがアクションする前にPHPファイルが開かれてしまっている感じ。 DOMDocumentのload()やloadXML()で読み込む方法もトライしましたが結果は同じ・・・。 根本的に間違ってますか? PHPから吐き出されるXMLを読み込むためにXMLファイルを記述するところにPHPスクリプトを指定すること自体が間違っているようにも思っています。 お手数をお掛けいたしますがお教え願います。

    • ベストアンサー
    • PHP
  • xmlとxslをサーバサイドでxhtmlに変換して出力

    xmlとxslを使ってfirefoxで確認したところxhtmlになっていました。 で、これを全てのブラウザに対応したく、サーバサイドでxhtmlに変換して出力したいのです そうするとIEやFirefoxなどでヘッダ調節やなにやらできると思ったので 共通部分も部品化できそうだし。 問題はまだPHPでUAでブラウザを判断してとばしたり 共通部分をインクルードして表示する程度しかできません。 これぐらいの技術でなんとかなるものなのでしょうか? この関数を見ろという感じでも構いませんので、何かヒントをください これだけはやりたいというのが、xml文書にできればxslファイルの在処は記載したくないのです。 xml文書を指定すれば、単純なxml文書を見るという感じにしたいので どうかよろしくお願いします

    • ベストアンサー
    • PHP
  • PHPでXMLを表示させたときの外部エンティティの挙動に関して

    XML+XSLでHTMLを生成する上で、PHPを経由する場合と、しない場合で、 外部エンティティの挙動が異なっていて悩んでいます。 具体的には、  ・XML+XSL+外部エンティティ → 意図通りHTML生成  ・PHP+XML+XSL+外部エンティティ → 意図通りHTML生成されない(外部エンティティが生成されない) こういうものなのでしょうか? もし、こういう仕様であれば、なにか対応策はあるのでしょうか? ソースと生成されたHTMLは下記の通りです。 【Though.php】 <?php header( 'Content-Type: text/html; charset=UTF-8' ); $xml = new DomDocument(); $xml->load( 'MainData.xml' ); $xsl = new DomDocument(); $xsl->load('Main.xsl'); $processor = new xsltprocessor(); $processor->importStyleSheet($xsl); echo $processor->transformToXML($xml); ?> 【MainData.xml】 <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="Main.xsl" ?> <!DOCTYPE books [ <!ENTITY sub_data SYSTEM "SubData.xml"> ]> <root> <node1>TEST1</node1> <node2>&sub_data;</node2> </root> 【Main.xsl】 <?xml version = "1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <xsl:apply-templates /> </html> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates /> </xsl:copy> </xsl:template> </xsl:stylesheet> 【SubData.xml】 <?xml version="1.0" encoding="utf-8"?> <sub_data>Test2</sub_data> 【XML+XSL+外部エンティティで生成されるHTML(ブラウザで直接MainData.xmlを開いた場合)】 <html><?xml-stylesheet type="text/xsl" href="Main.xsl" ><root><node1>TEST1</node1><node2><sub_data>Test2</sub_data></node2></root></html> 【PHP+XML+XSL+外部エンティティで生成されるHTML(ブラウザでThrough.phpを開いた場合)】 <html> <?xml-stylesheet type="text/xsl" href="Main.xsl" ><root> <node1>TEST1</node1> <node2></node2>    //←node2の中がカラッポになっている。。。 </root> </html> ※生成されたHTMLは、IE8の開発者ツールで確認しています。 XMLやPHPは最近やり始めたのでトンチンカンなことを言ってるかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • XML DOM XMLパーサーについて理解していません

    XMLについてイマイチ理解していないので教えてください。PHPでXMLファイルを開いて何らかの処理をするとします。例えば <?php //ドキュメントオブジェクトの作成 $doc = new DOMDocument(); //XML 文書ファイルのパース(DOM ツリーの作成) $doc->load("docs/td101.xml") //要素"b"を取得する $bElement = $doc->getElementsByTagName("b")->item(0); //取得した要素"b"に属性"ad"を設定する $bElement->setAttribute("ad","Fukuoka"); //ドキュメントをシリアライズする $doc->save("docs/result101.xml"); ?> のようにXMLファイルに属性を追加するという処理を行うとします。この時、DOMはPHPによって生成されるんでしょうか?またXMLはXMLパーサーによって解析されると本で読んだのですが、この場合PHPがXMLパーサーの機能を持っているんでしょうか?それともブラウザにXMLパーサーの機能があり、ブラウザ側で処理をされているのでしょうか?意味がわからなくて申し訳ないですが、この辺りを理解していなくて・・・御願いいたします。

    • ベストアンサー
    • XML
  • XMLのURLをPHP表示したいのですが

    ご質問失礼いたします。 XMLをPHPで表示させたくて、下記のようにPHPファイルを作りました。 <?php $xmlfile = "xmlのURL"; $article=file_get_contents($xmlfile); echo "<table><tr><td>題名</td><td>リンク</td></tr>"; foreach($article->ItemLookupResponse->Items->Item as $data){ echo "<tr><td>"; echo $data[Title]; echo "</td><td>"; echo $data[ItemLinks->ItemLink asURL]; echo "</td></tr>"; } echo "</table>"; ?> echo $article;//で確認したXML(表示に必要な部分だけに省略させていただきました) <?xml version="1.0" ?> <ItemLookupResponse xmlns="http://www.~"> <Items> <Item> <Title>たいとる</Title> <ItemLinks> <ItemLink> <URL>http://www.~</URL> </ItemLink> </ItemLinks> </Item> </Items> </ItemLookupResponse> しかし、表示されず原因を特定することができません。 XMLだけを表示すると、 「This XML file does not appear to have any style information associated with it. The document tree is shown below.」 とは出ますが、情報はきちんと出ていると・・・思います。 PHPのファイルはページのソースを確認しても問題ないように見えたので、 表示の方法かXMLが違うのか、ご指摘いただければと思います。 すみません、知識が未熟な為、伝わりにくかったら申し訳ございませんが、 何卒お力をいただけたらと思います、宜しくお願い致します。

    • ベストアンサー
    • XML
  • PHPでファイル生成時のファイル名

    IE:7.0.5730.13 PHP:4.3.9 PHPでXMLファイルを作成し表示させるプログラムを以下のようにして書きました。 「header("Content-Type: text/xml; charset=UTF-8");」 それで、その表示しているファイルを保存するときに、「a.xml」のように保存したいと思い、 「header("Content-Disposition: inline; filename=\"a.xml\"");」のようにソースに付け加えました。 実行結果は、HTMLのリンクで右クリックで「名前をつけて保存」なら「a.xml」と表示され、 XMLデータ表示時に、「ファイル→名前を付けて保存」だとPHPのファイル名になってしまいます。 どのようにしたら、どちらでも「a.xml」と表示されるのでしょうか? わかる方がおられたらご教示お願いします。 それと、こちらはついで程度なのですが、 Firefoxだとどちらもphpのファイル名になってしまってます。 Firefoxでの場合も出来れば教えてもらえないでしょうか?

    • 締切済み
    • PHP
  • xmlに書かれた数だけムービークリップを生成したい。

    FlashCS3 AS2.0 FlashPlayerバージョン8で作成しています。 xmlをFlashに読み込む事自体は初めてではないです。 図は背景の黒い部分がHTMLで、Flash内でスクロールをさせたいイメージです。 phpから送られてくるxmlデータにコンテンツの総数が書かれた <total>タグを付け、その<total>内にある数だけMCを作成したいと思っています。 コンテンツの総数は多くても15個ほどです。 分からない事は ・xmlから受けたデータの数だけMCを生成するスクリプト (AS3だと類似したスクリプトが見つかるのですが・・・。) ・生成するにおいて、MCを配置する場所を決めたい。 (どんどん下に追加されていくように配置したい) ・コンテンツ数が1つだった場合、Flash内でスクロールが出ないようにし、コンテンツ数が複数になった場合だけスクロールが出るようにしたい。 (ステージサイズ自体は縦に2000pxくらい長くして、コンテンツがイラストの赤い枠線より大きくならなかった場合スクロールを表示させない) スクリプトでムービークリップを動的に増やさずに、 最初から複数縦に並べておいて、コンテンツ数が1個のときに2個目以降のMCは何も 表示されないようにし、スクロールしないように設定してあげて、 逆にコンテンツ数が2個目以降はスクロールを表示してあげれば簡略化できるのでしょうか・・・。 何卒よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • javascriptでXML IEとfireFox

    作成中のホームページで、条件を入力させてその条件に合ったデータ(XMLで管理)を表示する という内容のモノを作ろうとしています。 実際に一通り動く所までは出来たのですが、IEでしか動作せず Firefox等の他ブラウザだと動作しません。 調べてみると、ActiveXObjectが使えないようなのですが どういう方法で実装すると動作するようになるのでしょうか。 よろしくお願いします。 ----------以下ソース一部---------- // ワーク用の XML ドキュメントオブジェクト var objDocWk = new ActiveXObject("Msxml2.DOMDocument.3.0") // 出力用の新しいルートノードを作成 dstNd = objDocWk.createNode(1, "list", "") // XML ドキュメントオブジェクト生成 var objDoc = new ActiveXObject("Msxml2.DOMDocument.3.0") objDoc.async = false objDoc.load("msch.xml") var objRootNode = objDoc.documentElement.childNodes =======================補足======================= 下記のようにやってみたのですが、jsのエラーが起り原因がわからないです。※fireFoxのみIEでは動作確認済 if (window.ActiveXObject) { //for IE // XML ドキュメントオブジェクト生成 var objDoc = new ActiveXObject("Msxml2.DOMDocument.3.0") objDoc.async = false // 曲情報の読込み objDoc.load("msch/msch.xml") // ワーク用の XML ドキュメントオブジェクト var objDocWk = new ActiveXObject("Msxml2.DOMDocument.3.0") } else { //for Firefox // XML ドキュメントオブジェクト生成 var xhttp = new XMLHttpRequest(); xhttp.open("GET", "msch/msch.xml", false); xhttp.send(null); var objDoc = xhttp.responseText; window.alert(objDoc); // ワーク用の XML ドキュメントオブジェクト var xhttp2 = new XMLHttpRequest(); xhttp2.open("GET", "msch/msch.xml", false); xhttp2.send(null); var objDocWk = xhttp2.responseText; window.alert(objDocWk); } // 出力用の新しいルートノードを作成 dstNd = objDocWk.createNode(1, "musiclist", "") // 曲情報のルートノードを取得 var objRootNode = objDoc.documentElement.childNodes エラー内容が objDocWk.createNode is not a function  と objDoc.documentElement is undefined   です。

  • PHP+MySQLでXMLを作成し、それをいくつか連結したものを返す方

    PHP+MySQLでXMLを作成し、それをいくつか連結したものを返す方法を教えてください。 HTML ↓(1)httpリクエスト,パラメータ (2)main.php(XML化メイン処理) XMLデータ送信→ HTML ↑ ↑ ↑ ↓ ↓ ↓ (3)xml_1.php xml_2.php xml_3.php(XML生成子処理) ↑ ↑ ↑ ↓ ↓ ↓ DB (2)main.phpでHTMLから受け取ったコマンドを元に生成するXMLの取得を振り分ける。(switch文) (3)各phpでDBからデータを取得しXML形式にする。 (4)main.phpでそれぞれのXMLを連結し送信。 というのがやりたいことなんですけど、 ・SQLからデータを取得し、XMLにする方法 ・メイン処理でそれぞれを連結する方法 がわかりません。 main.php <?php function xml_main($cmd, &$xml ){ global $log4php,$con,$debugMode; $result = false; $dbErrMsg; // DB Open openDb(); dbErr(); // log4phpオブジェクト //$log4php = new log4php('log4php_xml.properties'); // トランザクション開始 mysql_query('BEGIN'); $log4php->debug('トランザクション開始'); /* try{ // 文字コード変換(ujis=EUC-JP) // TIPS デフォルトの文字コードがEUCだった場合は以下の二行を削除してください。 $sql = "SET NAMES utf8"; $result = @mysql_query($sql); } */ // XML Header生成 // コマンド毎の呼び出し switch($cmd){ case 0: xml_1.phpとxml_2.phpで生成したxmlを連結 break; case 1: xml_1.phpとxml_3.phpで生成したxmlを連結 break; case 2: xml_2.phpとxml_3.phpで生成したxmlを連結 break; default: break; } // XML基本情報タグ生成 // XML Footer生成 // DB Close closeDB(); } ?> xml_1.php <?php function xml_1($id,$member,$msg,&$xml){ //DBからデータを取得 //xmlを作成 } ?> という感じでやろうとしてるんですが。 xml_1.php xml_2.phpで文字列をreturnしてmain.phpでSimpleXMLで連結させるというのも方法として書いてあったんですが、 具体的なやり方がわかりません。 環境はPHP5.1 MySQL5です。

    • ベストアンサー
    • PHP
  • xmlファイルが生成されない

    <?php //DomDocumentを呼び出す $dom = new DomDocument('1.0','UTF-8'); //要素ノード[document]を追加 $document = $dom->appendChild($dom->createElement('document')); //新しい要素をdocumentの子要素として挿入する $document->appendChild($dom->createElement('name','名前です')); $document->appendChild($dom->createElement('text','テキストです。')); //字下げや空白を考慮してきれいに整形した出力を行う $dom->formatOutput = true; //同階層にtest.xmlとして保存 $dom->save('test.xml'); //出力 echo $dom->saveXML(); ?> のように、同じディレクトリ内にXMLファイルを生成するphpプログラムを作成してみたのですが、 ブラウザからこのPHPファイルにアクセスしてもXMLファイルが作られません。どうすれば良いのでしょうか。 なにかphp,apache等の設定をしてないからでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう