Создание XML-строки с несколькими элементами в PHP

0

Я пытаюсь создать XML-строку в PHP, с циклом. Но я получаю ошибку синтаксического анализа.

Это строка 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 или XMLWriter ?
  • 1
    Как будто вы пытаетесь использовать heredoc, но вы никогда не запускали его, а только заканчивали его ... и вы пытаетесь продолжить его в течение цикла ... что не сработает.
Теги:
string

1 ответ

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();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню