2015-03-02 64 views
0

我試圖在PHP中創建一個帶有循環的XML字符串。但我得到一個解析錯誤。在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; 
+2

爲什麼不使用[SimpleXML](http://www.php.net/manual/en/book.simplexml.php)或[XMLWriter](http://www.php.net/manual) /en/book.xmlwri ter.php)? – 2015-03-02 22:40:04

+1

它就像你試圖使用heredoc,但你從來沒有開始它,只能結束它....你試圖在整個循環中繼續它...這是不會工作。 – developerwjk 2015-03-02 22:41:03

回答

0

如果你想手動創建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>"; 

或者使用輸出緩衝:

//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(); 
相關問題