2012-03-07 143 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"?> 
    
  • 什么是你的代码示例结束后?>