4

我正在使用 XMLWriter 创建 xml。下面是我的代码,它工作正常。

<?php
header("Content-Type: text/xml;");
$writer = new XMLWriter(); 
$writer->openMemory();  
$writer->startDocument('1.0'); 
$writer->setIndent(4); 
$writer->startElement('epp'); 
$writer->startElement("command"); 
$writer->startElement("login"); 
$writer->writeElement('clID', 'hello'); //username
$writer->writeElement('pw', 'abcdefg'); //password
$writer->endElement(); //login
$writer->endElement(); //command
$writer->endElement(); //login
$writer->endDocument(); 
$file =  $writer->outputMemory(true); 
echo $file;

?>

如果使用下面的代码,我会收到错误“Getting Error”Below is a rendering of the page up to the first error.”。

<?php
$time  = time();
echo $time;
header("Content-Type: text/xml;");
$writer = new XMLWriter(); 
$writer->openMemory();  
$writer->startDocument('1.0'); 
$writer->setIndent(4); 
$writer->startElement('epp'); 
$writer->startElement("command"); 
$writer->startElement("login"); 
$writer->writeElement('clID', 'hello'); //username
$writer->writeElement('pw', 'abcdefg'); //password
$writer->endElement(); //login
$writer->endElement(); //command
$writer->endElement(); //login
$writer->endDocument(); 
$file =  $writer->outputMemory(true); 
echo $file;

?>

错误:对于下面的代码块是错误:我在谷歌浏览器中得到这个:

 This page contains the following errors:

 error on line 1 at column 1: Document is empty
 Below is a rendering of the page up to the first error.

如果我没有使用 header("Content-Type: text/xml;"); 然后上面的代码块正在工作,但时间正在显示并且没有给出 xml 格式。以下是错误:

1354510317 hello abcdefg

编辑: 在Mozilla我得到以下错误:

XML Parsing Error: not well-formed
Location: http://localhost/example.php
Line Number 1, Column 11:1354512268<?xml version="1.0"?>
 ----------^

如果我的代码做错了什么,请提出建议。

“下面是直到第一个错误的页面呈现。” 错误可以消除吗?

4

3 回答 3

9

如果您在 XML 内容之外回显时间,则它不再是有效的 XML,这就是浏览器抱怨的原因。

将内容类型指定为 text/xml 会告诉浏览器解析 XML 并将其呈现为可读格式。

如果您查看失败代码的来源,您应该看到后面的时间是原始 XML 内容。

当您不发送 text/xml 内容类型时它看起来不正确的原因是浏览器本质上将 XML 标记视为 HTML 并决定它们不会改变布局,因此它只显示来自的纯文本值标签内。

如果您想在页面中混合正常输出和 XML 输出,则需要很好地格式化 XML 并对其进行 HTML 编码。

于 2012-12-03T05:42:36.760 回答
2
header("Content-Type: text/xml;");

您在那里使用什么类型的标头,以便输出应采用该格式。

例子 :

header("Content-Type: text/xml;");

output : coutput in xml format

header("Content-Type: text/php;");

output : output in php format
于 2014-08-22T18:20:48.123 回答
-1

很多时候,不需要结束标记的 HTML 元素会出现此错误。

Bad:  <img src="https://google.com">
Good: <img src="https://google.com"/>
于 2019-10-02T14:56:41.263 回答