标题的替代(“Content-type:text / xml”);

时间:2015-01-14 16:31:43

标签: php xml

是否还有其他东西可以用来代替header("Content-type: text/xml"); 我想从我的数据库中生成XML,并且我不断收到以下错误:

Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/php32/Eindopdracht/api.php:1) in /Applications/MAMP/htdocs/php32/Eindopdracht/core/functions/api.php on line 41

我已经检查过我有任何空格,但我认为这不会导致错误。 这是我在PHP中编写的函数:

function generateXML(){
    $sql="SELECT * FROM csvupload";
    $result=mysql_query($sql);
    $xml = new XMLWriter();

    $xml->openURI("php://output");
    $xml->startDocument();
    $xml->setIndent(true);

    $xml->startElement('chords');

    while ($row = mysql_fetch_assoc($result)) {
      $xml->startElement("chord");

      $xml->writeAttribute('E', $row['item1']);
      $xml->writeAttribute('a', $row['item2']);
      $xml->writeAttribute('d', $row['item3']);
      $xml->writeAttribute('g', $row['item4']);

      $xml->endElement();

    }

    $xml->endElement();
    header('Content-type: text/xml');
    $xml->flush();
}

2 个答案:

答案 0 :(得分:2)

您的header电话必须在 之前发生任何内容输出到浏览器。

有可能,你文件的第一行就像[space]<?php - 删除空间应该可以解决问题。

答案 1 :(得分:0)

你的文字编辑器是什么?我之前遇到过这个问题,我在编码菜单中使用Notepad ++,有一个名为Encode的选项,UTF-8没有BOM,您应该在其他编辑器中选择它或类似的东西。

您可以通过保存空文件并检查其文件大小来确保。

您可以在http://en.wikipedia.org/wiki/Byte_order_mark

找到有关BOM的更多信息