Невозможно экспортировать XML из PHP с помощью WAMPServer - PullRequest
0 голосов
/ 19 апреля 2011

Я использую 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.

Я пробовал с явным заголовком и без него. Если я удалю вызов функции header () PHP, я получу следующие результаты:

  • 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: пустой экран

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

Ваш скрипт может содержать нежелательные и невидимые символы (например, спецификацию) перед тегом запуска PHP

0 голосов
/ 19 апреля 2011

Браузеры не предназначены для отображения любого произвольного XML.Им нравится HTML (который может быть XHTML).Неясно, почему вы хотите, чтобы браузеры отображали их.Если он предназначен для пользователей и пользователей, то вам следует отформатировать их в HTML, если это для API (службы), то проверьте это с помощью curl / wget / etc, и я уверен, что XMl будет выглядеть одинаково каждый раз.

...