Я использую WAMPServer 2.1 на своей локальной машине. Я пытаюсь создать простой PHP-скрипт для вывода XML-файла. Я не могу заставить его работать без ошибки в IE и Chrome. В Firefox 4 это работает.
Вот PHP:
<?php
main();
function main()
{
header("Content-type: application/xml");
OutputXML('xml/login_user_good.xml');
exit(0);
}
function OutputXML($filename)
{
echo file_get_contents($filename);
}
?>
Вот XML-файл:
<?xml version="1.0" encoding="utf-8" ?>
<login_user>
<result_code value="1"/>
<error value="Invalid username or password"/>
</login_user>
Когда я попытался получить доступ к своему PHP-скрипту с помощью IE 8, я получаю эту ошибку:
The XML page cannot be displayed Cannot view XML input using style sheet.
Please correct the error and then click the Refresh button, or try again later.
--------------------------------------------------------------------------------
Invalid at the top level of the document. Error processing resource
'http://localhost/kiamobile/login_user.php'. Line 1, P...
<?xml version="1.0" encoding="utf-8" ?>
^
В Google Chrome 10 я получаю эту ошибку:
This page contains the following errors:
error on line 1 at column 6: XML declaration allowed only at the start of the document
В Firefox 4 я получаю правильно отформатированный вывод XML.
В любом из браузеров, когда я просматриваю исходный код, я вижу правильный XML.
Я пробовал с явным заголовком и без него. Если я удалю вызов функции PHP header(), я получу следующие результаты:
- IE 8: та же ошибка, что и раньше
- Firefox 4: пустой экран
- Chrome 10: пустой экран
Опять же, если я просматриваю исходный код в любом из браузеров, я вижу XML. Я пробовал использовать text/html вместо application/xml, но безрезультатно.
Я попытался сгенерировать XML непосредственно в коде PHP, например:
<?php
main();
function main()
{
header("Content-type: application/xml");
OutputXML();
exit(0);
}
function OutputXML()
{
echo <<<END
<?xml version="1.0" encoding="utf-8" ?>
<login_user>
<result_code value="1"/>
<error value="Invalid username or password"/>
</login_user>
END;
}
?>
Когда я это делаю, я получаю следующие результаты:
- IE 8: та же ошибка
- Firefox 4: я вижу отформатированный XML
- Chrome 10: пустой экран
Что я делаю неправильно?