我正在使用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);