如果使用saveXML(),PHP echo会返回错误吗



我正在使用PHP生成XML并在浏览器上显示。我有以下代码:

<?php
header("content-type:application/xml;    charset=ISO-8859-15"); 
$doc = new DOMDocument('1.0');
// we want a nice output
$doc->formatOutput = true;
$doc->preserveWhiteSpace = false;
$root = $doc->createElement('book');
$root = $doc->appendChild($root);
$title = $doc->createElement('title');
$title = $root->appendChild($title);
$text = $doc->createTextNode('This is the title');
$text = $title->appendChild($text);
//echo "Saving all the document:n";
//echo $doc->saveXML()."n";
echo "Saving only the title part:n";
echo $doc->saveXML($title);
?>

如果我注释掉echo "Saving only the title part:n";,它会在我的浏览器中为我生成XML,而不会有任何问题,但如果我试图在echo $doc->saveXML($title);之前添加此echo "Saving only the title part:n";,它将在浏览器中给我以下错误:

此页面包含以下错误:第1行第1列出现错误:文档为空以下是第一个错误之前的页面呈现。

有人知道为什么吗?在我的浏览器中打印出XML之前,有没有办法显示字符串?

这是因为您已将文档内容类型设置为application/xml,因此浏览器希望所有内容都是XML形式。

要使上述代码工作,请将内容类型更改为text/plain

以下代码有效(在我的机器上测试(:

header("content-type:text/plain; charset=ISO-8859-15");
$doc = new DOMDocument('1.0');
$doc->formatOutput = true;
$doc->preserveWhiteSpace = false;
$root = $doc->createElement('book');
$root = $doc->appendChild($root);
$title = $doc->createElement('title');
$title = $root->appendChild($title);
echo "Saving only the title part:n";
echo $doc->saveXML($title);

最新更新