2017-07-17 80 views
0

我有下面的PHP代碼,旨在從MySQL數據庫中的3列和多行創建XML文檔。我收到以下錯誤消息:PHP XML錯誤 - 文檔末尾的額外內容

此頁面包含以下錯誤:

第8行誤差在11列:在文檔 下面的末尾額外內容​​的頁面了一個渲染到第一個錯誤。

作爲text.-

- 一些正確的輸出這讓我發瘋,我已經加入,並在代碼中刪除XML的東西,但沒有什麼幫助。

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

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

$db = new PDO('mysql:host=localhost;dbname=hidden','hidden','hidden'); 
$stmt = $db->prepare("SELECT * FROM testDB"); 
$stmt->execute(); 
while($row = $stmt->fetch()){ 
$xmlout .= "\t<test>\n"; 
$xmlout .= "\t\t<one>".$row['one']."</one>\n"; 
$xmlout .= "\t\t<two>".$row['two']."</two>\n"; 
$xmlout .= "\t\t<three>".$row['date1']."</three>\n"; 
$xmlout .= "\t</test>\n"; 
} 

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

幫助非常感謝!

+0

是否有任何數據庫列值包含任何此符號< >? –

+0

@SamuilBanti No. –

+0

當您查看生成的頁面的源時,您會看到什麼?你用什麼來看待它?瀏覽器? –

回答

1

我會建議使用DOMDocument生成XML而不是字符串連接。根據您期望的內容,您也可以使用CDATA部分的XML - 對代碼進行相當簡單的修改即可。

<?php 

    $sql='select * from `testdb`'; 
    $db=new PDO('mysql:host=localhost;dbname=hidden','hidden','hidden'); 
    $stmt=$db->prepare($sql); 

    if($stmt){ 
     $res=$stmt->execute(); 
     if($res){ 

      $dom=new DOMDocument; 
      $root=$dom->createElement('testXML'); 
      $dom->appendChild($root); 

      while($rs=$stmt->fetch(PDO::FETCH_OBJ)){ 
       $test=$dom->createElement('test'); 

       $test->appendChild($dom->createElement('one', $rs->one)); 
       $test->appendChild($dom->createElement('two', $rs->two)); 
       $test->appendChild($dom->createElement('three', $rs->three)); 

       $root->appendChild($test); 
      } 
     } 

     $stmt->closeCursor(); 

     header('Content-Type: text/xml'); 
     echo $dom->saveXML(); 
    } 

?> 
+0

哇,整潔的解決方案!奇蹟般有效。先生非常感謝您! –

相關問題