在PHP中创建包含多个项的XML字符串

在PHP中创建包含多个项的XML字符串,php,xml,string,Php,Xml,String,我试图用PHP创建一个带有循环的XML字符串。但是我得到了一个解析错误 这是我试图创建的XML字符串: $xmlstr = <<<XML <?xml version='1.0'?> <DOCUMENT>; while ($stmt->fetch()) { $xmlstr.= <ORDER> <ORDERNUMBER>$ordernumber</ORDER

我试图用PHP创建一个带有循环的XML字符串。但是我得到了一个解析错误

这是我试图创建的XML字符串:

$xmlstr = <<<XML
<?xml version='1.0'?>
<DOCUMENT>;

while ($stmt->fetch())
{ 
  $xmlstr.= 
             <ORDER>
               <ORDERNUMBER>$ordernumber</ORDERNUMBER>
               <USERNAME>$username</USERNAME>
               <EMAIL>$mail</EMAIL>
               <STATUS>$status</STATUS>
               </ORDER>;
           };

  $xmlstr.= 
  </DOCUMENT>
  XML;

$xmlstr=如果要手动生成xml,可以附加每一行:

$xmlstr = "<?xml version='1.0'?>";
$xmlstr .="    <DOCUMENT>";

while ($stmt->fetch())
{ 
    $xmlstr.= "    <ORDER>";
    $xmlstr.= "        <ORDERNUMBER>$ordernumber</ORDERNUMBER>";
    $xmlstr.= "        <USERNAME>$username</USERNAME>";
    $xmlstr.= "        <EMAIL>$mail</EMAIL>";
    $xmlstr.= "        <STATUS>$status</STATUS>";
    $xmlstr.= "    </ORDER>";
};

$xmlstr.= "    </DOCUMENT>";
$xmlstr=”“;
$xmlstr.=”;
而($stmt->fetch())
{ 
$xmlstr.=”;
$xmlstr.=“$ordernumber”;
$xmlstr.=“$username”;
$xmlstr.=“$mail”;
$xmlstr.=“$status”;
$xmlstr.=”;
};
$xmlstr.=”;
或使用输出缓冲:

//start output buffer
ob_start();
//exit php mode and write xml directly
?>
<?xml version='1.0'?>
    <DOCUMENT>
    <?php while ($stmt->fetch()):?>
        <ORDER>
            <ORDERNUMBER><?php echo $ordernumber;?></ORDERNUMBER>
            <USERNAME><?php echo $username;?></USERNAME>
            <EMAIL><?php echo $mail;?></EMAIL>
            <STATUS><?php echo $status;?></STATUS>
        </ORDER>;
    <?php endwhile;?>
    </DOCUMENT>
<?php
//save buffer to variable and flush buffer
$xmlstr = ob_get_clean();
//启动输出缓冲区
ob_start();
//退出php模式并直接编写xml
?>
;

为什么不使用或?这就像你试图使用一个heredoc,但你从来没有开始过,只是结束了它…你试图在一个循环中继续它…这是行不通的。