PHP-код
<?php
$xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$xml.="<db_entry id=\"$model->id\" doi=\"$model->identifier\">";
$xml.="<dataset>";
$xml.="</dataset>";
$xml.="</db_entry>";
$xml=preg_replace('/&(?!#?[a-z0-9]+;)/', '&', $xml);
$output= simplexml_load_string($xml);
echo $output->asXML();
когда я запускаю его, он не может отображать XML-формат на веб-странице (отображает весь текст без тэга xml). поэтому я добавляю заголовок(), но он показывает ошибку XML Parsing: XML или текстовое объявление не в начале объекта.
<?php header("Content-type: text/xml"); ?>
<?php
$xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$xml.="<db_entry id=\"$model->id\" doi=\"$model->identifier\">";
$xml.="<dataset>";
$xml.="</dataset>";
$xml.="</db_entry>";
$xml=preg_replace('/&(?!#?[a-z0-9]+;)/', '&', $xml);
$output= simplexml_load_string($xml);
echo $output->asXML();
веб-страница отображается пустой, но в источнике просмотра страницы она показывает
<?xml version="1.0" encoding="UTF-8"?>
<db_entry id="5" doi="110039"><dataset/></db_entry>
и имеет три пустые строки в начале.
Изменить эту область
<?php header("Content-type: text/xml"); ?>
<?php
$xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
к
<?php
header("Content-type: text/xml");
$xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
ПРИЧИНА
Закрывая php в одной строке и снова открывая в следующей строке, вы записываете строку на выход. Как вы знаете, объекты вне <?php?>
Будут напрямую печататься в браузере. И согласно правилу XML, вы не можете поместить ничего перед частью <?xml...?>
.
<?php
и вы не используете тег ?>
Прежде чем делать декларацию XML.
$xml
и посмотрите, что вы получите.