使用php从mysql数据创建xml

时间:2017-04-04 13:02:08

标签: php mysql xml

我有这段代码:

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

$xmlout = "<?xml version=\"1.0\" ?>\n";
$xmlout .= "<persons>\n";

$db = new PDO('mysql:host=localhost;dbname=xxx','root','');
$stmt = $db->prepare("select * from users");
$stmt->execute();
while($row = $stmt->fetch()){
    $xmlout .= "\t<person>\n";
    $xmlout .= "\t\t<id>".$row['id']."</id>\n";
    $xmlout .= "\t\t<username>".$row['username']."</username>\n";
    $xmlout .= "\t\t<password>".$row['password']."</password>\n";
    $xmlout .= "\t\t<realname>".$row['realname']."</realname>\n";
    $xmlout .= "\t\t<surname>".$row['surname']."</surname>\n";
    $xmlout .= "\t\t<email>".$row['email']."</email>\n";
    $xmlout .= "\t\t<created>".$row['created']."</created>\n";
    $xmlout .= "\t\t<admin>".$row['admin']."</admin>\n";
    $xmlout .= "\t</person>\n";
}

$xmlout .= "</persons>";
echo $xmlout;
?>

并且它不起作用,它有这个错误:

  第1行第2行的

错误:文档末尾的额外内容   下面是第一个错误的页面呈现。

有谁知道,哪里有问题?

2 个答案:

答案 0 :(得分:0)

\t(标签)是什么?是否有特定原因要在代码中手动声明它?你试过删除吗?

另外,在设置标题之前尝试构建XML字符串,然后回显字符串。

答案 1 :(得分:0)

考虑使用DOMDocument类而不是字符串连接来构建XML。可能特殊空格和制表符与标题输出相冲突。 DOM将使用select @alt:=substring(yourcolumn, 12, if(locate(';',yourcolumn,12)=0,length(yourcolumn),locate(';',yourcolumn,12))-13) as alt, case locate('s:5:',yourcolumn, 12+length(@alt)) when 0 then '' else substring(yourcolumn, 33+length(@alt)) end as title from yourtable, (select @alt:='') x; 方法打印输出。

formatOutput