簡體   English   中英

使用php從mysql數據創建xml

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM