我有这段代码:
<?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行的错误:文档末尾的额外内容 下面是第一个错误的页面呈现。
有谁知道,哪里有问题?
答案 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