Мой процессор API возвращает данные в одном из нескольких форматов, обозначенных ключевым словом «тип» в запросе. Я могу вызвать, например, заголовок JSON, используя следующий метод, но это не работает для XML. Есть ли способ вызвать это без ошибки?
<?PHP
if ($_REQUEST['type'] == "XML")
{
header ("Content-Type:text/xml");
}
В обозначении заголовка нет пробела. Позже я использую PHP-класс dom для формулировки XML. Это выглядит так
$dom = new DOMDocument("1.0", 'utf-8');
$root = $dom->createElement("Data");
$dom->appendChild($root);
if (!empty($Error))
{
$Er = $dom->createElement("Errors");
$root->appendChild($Er);
foreach($Error as $value)
{
$key = "Error";
$Child = $dom->createElement($key);
$Child = $Er->appendChild($Child);
$data = $dom->createTextNode($value);
$data = $Child->appendChild($data);
}
}
else
{
foreach($XMLItems as $key => $value)
{
$key = $dom->createElement($key);
$root->appendChild($key);
$variable = $dom->createTextNode($value);
$key->appendChild($variable);
}
}
$dom->preserveWhiteSpace = FALSE;
$dom->formatOutput = TRUE;
echo $dom->saveXML();
Решение: Что я сделал, чтобы решить проблему здесь, следуя предложениям Айнбера, так это удалил все пустые строки в PHP, а также любые включения. Я удалил закрывающие PHP-теги и лишние строки в этих включениях, а также в основном файле. Это устранило две пустые строки в верхней части файла, что позволило мне вставить заголовок XML.
🤔 А знаете ли вы, что...
PHP поддерживает многопоточность и многозадачность.
"XML Parsing Error: XML or text declaration not at start of entity"
означает, что где-то в начале вашего вывода XML есть пробел или другой символ, которого там быть не должно. Есть несколько мест для проверки:
<?php
нет пробелов, новых строк или невидимых символов.