2012-03-07 146 views
-2

我目前有一個用PHP編寫的腳本,我連接到phpMyAdmin中的數據庫,然後將所有表值解析爲一個XML文檔。在PHP中創建/寫入XML文件?

這裏是腳本如何工作的:

$xmlBody .= "<XML>"; 
$sql_news = mysql_query("SELECT * FROM news_table"); 

$xmlBody .= "<News_Table>"; 

//this while loop churns out the values of our "news_table" table 
while($row_news = mysql_fetch_array($sql_news)){ 
    // Set DB variables into local variables for easier use 
    $id_news = $row_news["news_id"]; 
    $author_news = $row_news["news_author"]; 
    $time_news = $row_news["news_time"]; 
    $title_news = $row_news["news_title"]; 
    $content_news = $row_news["news_content"]; 
    $desc_news = $row_news["news_description"]; 
    $image_news = $row_news["news_image"]; 

    $xmlBody .= ' 
<News_Table_Entry> 
    <DataID>' . $id_news . '</DataID> 
    <DataAuthor>' . $author_news . '</DataAuthor> 
    <DataTime>' . $time_news . '</DataTime> 
    <DataTitle>' . $title_news . '</DataTitle> 
    <DataContent>' . $content_news . '</DataContent> 
    <DataDesc>' . $desc_news . '</DataDesc> 
    <DataImage>' . $image_news . '</DataImage> 
</News_Table_Entry>'; 
} // End while loop 

$xmlBody .= "</News_Table>"; 

mysql_close(); // close the mysql database connection 
$xmlBody .= "</XML>"; 
echo $xmlBody; 
?> 

如何創建和輸出此作爲外部XML file?我已經成功地獲得了此腳本的工作,但是使用所有寫入XML的方法無法正常工作。使用

echo 'Wrote: ' . $doc->save("/tmp/test.xml") . ' bytes'; // Wrote: 72 bytes 

函數不工作,以及fwrite函數以及。我一直在試圖弄清楚這幾天,但沒有一個我被告知嘗試的解決方案已經奏效。任何幫助或見解將不勝感激!

+0

對於可伸縮性和維護,您應該查看序列化。看看http://pear.php.net/package/XML_Serializer/redirected – 2012-03-07 06:11:43

+0

'$ doc'?你沒有使用'DOMDocument'或'SimpleXML',對吧?因此,沒有定義'save'方法。 – Raptor 2012-03-07 06:14:23

+0

你得到的解決方案? – 2012-03-07 06:27:50

回答

2

根據你的代碼,你已經構建XML內容自己。 XML文件只是常規的文本文件,所以在這種情況下,您不需要任何驗證和呈現的特殊XML函數。相反,你可以將文本只是保存到.xml文件:

file_put_contents('/tmp/test.xml', $xmlBody); 

file_put_contents讓你放棄所有的fopen/fwrite的功能,所以它是將內容寫入到磁盤的最簡單方法。


在另一方面,如果你想學習如何構建一個結構化的XML文檔與所有的鐘聲和一致性的口哨聲,擡頭SimpleXMLXMLWriter。這種方式會帶來更多的開銷,但手動完成所有標記可能會很笨重,尤其是當一個錯字可能會使整個文檔無效時。

0

這將幫助你

$xml_msg_in = fopen('/tmp/test.xml',"w"); 
fwrite($xml_msg_in,$xmlBody); 
fclose($xml_msg_in); 
0

你試過file_put_contents('/path/to/output.xml', $xmlBody);

-1
  • 只是爲了解,你的echo $xmlBody;行至少按預期工作?

  • 如果您嘗試在某處沒有成功地使用XML文件,則請注意您將XML標頭丟失爲XML文件的第一行。

    <?xml version="1.0"?> 
    
  • 注意,根據在數據庫中的數據,該頭可能需要指定較寬的編碼如UTF-16。但是你應該選擇你想在該數據庫中允許的字符集。

    <?xml version="1.0" encoding="UTF-16"?> 
    
  • 什麼是你的代碼示例結束後?>