创建动态xml并使用php类发送它

时间:2009-07-26 17:01:06

标签: php xml web-services rest

我的问题是我如何从这个类发送干净的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() {
}

}   

?> 

谢谢,理查德

4 个答案:

答案 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)

标头声明不必位于文档的顶部,但必须在生成任何输出之前。 如果您无法找到任何明确的输出,可能会出现空格或换行符之前的情况

但是,如果您在标题声明之前能够找到任何“输出”,请告诉我们。