我如何正确格式化XML输出

时间:2018-03-08 16:36:05

标签: php mysql xml database mysqli

我正在尝试使用PHP以XML格式显示数据库的内容。我能够显示数据,但是我无法正确格式化。任何建议都将不胜感激。

我想要实现的输出。

<people>
    <person>
        <id>111</id>
        <first_name>sara</first_name>
        <last_name>smith</last_name>
        <email>ssmith@mail.com</email >
    </person >
</people>

输出目前是这样的:

enter image description here

我的PHP代码

<?php 
  // Create con
    $con=mysqli_connect("HOST","USERNAME","PASSWORD","DB");

    // Check connection
    if (mysqli_connect_errno())
    {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    //get student ID from URL
    $STU_ID = $_GET['id'];

    $sql = "SELECT * FROM table";
    $res = mysqli_query($con, $sql);

    $xml = new XMLWriter();

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

    $xml->startElement('people');

    while ($row = mysqli_fetch_assoc($res)) {
      $xml->startElement("person");

      $xml->writeElement("id", $row['id']);
      $xml->writeElement("first_name", $row['first_name']);
      $xml->writeElement("last_name", $row['last_name']);
       $xml->writeElement("email", $row['email']);
      $xml->writeRaw($row['person']);

      $xml->endElement();
    }

    $xml->endElement();

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

     mysqli_free_result($res); 
    // Close connections
    mysqli_close($con);
?>

1 个答案:

答案 0 :(得分:2)

根据以上评论......

在浏览器中查看html或xml时,不会呈现斜角括号内的未知标记。您可以使用浏览器的查看来源选项查看它们。

正如Josh Taylor在评论中指出的那样,你应该能够输出

header('Content-type: text/xml');

但请参阅http://php.net/manual/en/function.header.php中的这条说明:

  

请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。