[英]create xml from mysql data using php
我有以下代碼:
<?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;
?>
並且它不起作用,它具有以下錯誤:
第2行第1列的錯誤:文檔末尾的額外內容以下是直到第一個錯誤的頁面呈現。
有人知道,哪里出了問題?
\\t
(標簽)的作用是什么? 您是在代碼中手動聲明它的特定原因嗎? 您是否嘗試過刪除它?
另外,在設置標題之前,嘗試構建XML字符串,然后回顯該字符串。
考慮使用DOMDocument類而不是字符串連接來構建XML。 特殊的空格和制表符可能與標題輸出沖突。 DOM將使用其formatOutput
方法漂亮地打印輸出。
header('Content-type: text/xml');
// INITIALIZE DOM OBJECT
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->formatOutput = true;
$dom->preserveWhiteSpace = false;
// CREATE ROOT AND APPEND TO DOCUMENT
$xmlRoot = $dom->createElement("persons");
$xmlRoot = $dom->appendChild($xmlRoot);
// QUERY DATABASE
$db = new PDO('mysql:host=localhost;dbname=xxx','root','');
$stmt = $db->prepare("select * from users");
$stmt->execute();
// FETCH ROWS ITERATIVELY
while($row = $stmt->fetch()){
// APPEND PERSON AS CHILD OF ROOT
$personNode = $xmlRoot->appendChild($dom->createElement('person'));
// APPEND CHILDREN TO PERSON
$personNode->appendChild($dom->createElement('id', $row['id']));
$personNode->appendChild($dom->createElement('username', $row['username']));
$personNode->appendChild($dom->createElement('password', $row['password']));
$personNode->appendChild($dom->createElement('realname', $row['realname']));
$personNode->appendChild($dom->createElement('surname', $row['surname']));
$personNode->appendChild($dom->createElement('email', $row['email']));
$personNode->appendChild($dom->createElement('created', $row['created']));
$personNode->appendChild($dom->createElement('admin', $row['admin']));
}
$stmt = null;
$db = null;
// OUTPUT TO SCREEN
echo $dom->saveXML();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.