プロが教えるわが家の防犯対策術!

IE7(だけ?)でXMLが表示できない。

お世話になります。
現在、PHP5.2とAJAXでHPを作成しています。

XMLを吐き出すphpのプログラムをOperaブラウザで
表示してできたのですが。
同じphpのプログラムを、IE7ブラウザからURLをたたくと
↓の様なエラーが発生します。


The XML page cannot be displayed
Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later.
--------------------------------------------------------------------------------

テキストの内容に無効な文字が見つかりました。リソース 'http://….php' の実行エラーです。ライン 2、位置 45

<root><ctg_info><ctg_cd>1</ctg_cd><ctg_name>


なぜなのでしょうか?
解決策を教えてください。
エンコードに問題があるのでしょうか??
どうかお願いいたします。

XMLを吐き出すphpは↓の通りで、


$dom = new DOMDocument('1.0', 'UTF-8');

…いろいろ中身をdomの要素を追加していく。…

print $dom->saveXML();


ちなみに、吐き出されるXMLは↓の通りです。


<?xml version="1.0" encoding="UTF-8"?>
<root>
<ctg_info>
<ctg_cd>1</ctg_cd>
<ctg_name>設計</ctg_name>
<naiyo_info>
<naiyo_cd>1</naiyo_cd>
<naiyo_name>仕様打合せ</naiyo_name>
</naiyo_info>
</ctg_info>
</root>

ちなみに、phpの
$dom = new DOMDocument('1.0', 'UTF-8');

$dom = new DOMDocument('1.0', 'EUC-JP');
と変更すると、↓のワーニングが出てしまいます。
Warning: DOMDocument::saveXML() [domdocument.savexml]: output conversion failed due to conv error, bytes 0xC0 0xDF 0xB7 0xD7

どうか、お願いいたします。

A 回答 (2件)

PHPのDOMDocumentの処理は、UTF-8でないとうまくいかない場合が多々あります。


mb_internal_encoding("UTF-8");
mb_http_output("UTF-8");
mb_language("ja");
も明示的にセットしましょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。
明示してみましたが、駄目でした。

お礼日時:2010/05/27 16:49

PHPプログラムの先頭(まだ何も出力する前に)


header('Content-Type: text/xml');
を入れてみる。

あるいは
header('Content-Type: application/xml');
も試してみて。
    • good
    • 0
この回答へのお礼

ありがとうございます。
実は、FireFoxでも表示ができなかったのですが、
yyr446さんの指示通りおこなったら、FireFoxでは表示できるように
なりました!!感謝です。

。。しかし、IE7ではいまだ表示できません。
答えに近づけたと思うのですが、さらに、情報ありましたらどうかお願いいたします。

お礼日時:2010/05/27 09:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!