用PHP创建/编写XML文件?

时间:2012-03-07 06:05:02

标签: php mysql xml database phpmyadmin

我目前有一个用PHP编写的脚本,我在phpMyAdmin连接到数据库,然后将所有表值解析为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功能。我一直在努力解决这个问题几天,但我没有被告知尝试过的解决方案都没有奏效。任何帮助或见解将不胜感激!

4 个答案:

答案 0 :(得分:2)

根据您的代码,您已经在自己构建XML内容。 XML文件只是常规文本文件,因此在这种情况下,您不需要任何验证和呈现的特殊XML函数。相反,您只需将文本保存到.xml文件:

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

file_put_contents允许您放弃所有fopen / fwrite函数,因此这是将内容写入磁盘的最简单方法。


另一方面,如果您确实想学习构建具有所有一致性的结构化XML文档,请查找SimpleXMLXMLWriter。通过这种方式稍微增加一些开销,但手工完成所有标记可能很难处理,尤其是当一个拼写错误导致整个文档无效时。

答案 1 :(得分:0)

这会对你有所帮助

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

答案 2 :(得分:0)

您是否尝试过file_put_contents('/path/to/output.xml', $xmlBody);

答案 3 :(得分:-1)

  • 只是要理解,您的echo $xmlBody;行至少按预期工作了吗?

  • 如果您尝试在某处使用XML文件但没有成功,请注意您缺少XML标头作为XML文件的第一行。

    <?xml version="1.0"?>
    
  • 请注意,根据数据库中的数据,此标头可能需要指定更宽的编码,例如UTF-16。但是您应该选择要在该数据库中允许的字符集。

    <?xml version="1.0" encoding="UTF-16"?>
    
  • 代码示例末尾的结尾?>是什么?