我的问题是我如何从这个类发送干净的xml。 它被简化了,因此其他事情可能造成的麻烦最少。
现在的问题是错误表明xml声明应该出现在文档的顶部。
避免此类错误的正确方法是什么? 是否有一些PHP功能可以为我做这个?
我必须提到我这样做的REST方式。 所以,没有肥皂服务器,xml-rpc服务器的麻烦。
第一部分是index.php中类的实例化。
该课程位于附带的文件中。
<?php
include 'controller/' . 'gpsController.php';
$gps=new gpsController('eenwaarde');
$gps->setgpsloc();
exit();
?>
<?php
class gpsController {
// extends controller
public $url;
function __construct($url) {
$this->url = $url;
}
public function setgpsloc() {
$gebruikersnaam="kabouter";
$status_code = 2;
header('Content-type: text/xml');
$output= "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$output.= "<response>\n";
$output.= "\t<status>$status_code</status>\n";
$output.= "\t<fout>$gebruikersnaam</fout>\n";
$output.= "</response>";
echo trim($output);
}
public function index() {
}
}
?>
谢谢,理查德
答案 0 :(得分:1)
给定的代码看起来很奇怪。我认为“<?php
”行需要作为第一行向上移动。您还应检查是否有任何包含的文件意外地执行某些输出,例如通过在第一个“<?php
”之前或之后的“?>
”之前设置空格或换行符。
除此之外,您可以使用XML库,但这只会确保您的XML代码格式正确。拥有清晰,清晰的XML创建代码是最重要的。最好使用PHP本身等模板库。 : - )
<?php header('Content-type: text/xml') ?>
<?xml version="1.0" encoding="utf-8"?>
<response>
<status><?php echo htmlspecialchars($status_code) ?></status>
<fout><?php echo htmlspecialchars($gebruikersnaam) ?></fout>
</response>
答案 1 :(得分:0)
看起来你在发送标题之前回显了很多空格。
首先,您的第一行在"<?php":
<?php
在运行第一个函数之前,你也在做一个包含..如果包含的文件在"<?php"
之前或"?>"
之前有空格,那么它将在函数之前被发送回浏览器运行...一旦你开始发送一个响应,并且尚未设置标题,那么默认标题将由php发送..当你在函数中设置标题时,你将得到错误你在描述。
答案 2 :(得分:0)
您可能需要考虑省略结束 ?&GT;在所有脚本中标记。 PHP会自动添加它。通过这种方式,您将永远不会遇到跟踪空白的问题?&gt;标签
答案 3 :(得分:-1)
标头声明不必位于文档的顶部,但必须在生成任何输出之前。 如果您无法找到任何明确的输出,可能会出现空格或换行符之前的情况
但是,如果您在标题声明之前能够找到任何“输出”,请告诉我们。