我目前有一个用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功能。我一直在努力解决这个问题几天,但我没有被告知尝试过的解决方案都没有奏效。任何帮助或见解将不胜感激!
答案 0 :(得分:2)
根据您的代码,您已经在自己构建XML内容。 XML文件只是常规文本文件,因此在这种情况下,您不需要任何验证和呈现的特殊XML函数。相反,您只需将文本保存到.xml文件:
file_put_contents('/tmp/test.xml', $xmlBody);
file_put_contents
允许您放弃所有fopen / fwrite函数,因此这是将内容写入磁盘的最简单方法。
另一方面,如果您确实想学习构建具有所有一致性的结构化XML文档,请查找SimpleXML
或XMLWriter
。通过这种方式稍微增加一些开销,但手工完成所有标记可能很难处理,尤其是当一个拼写错误导致整个文档无效时。
答案 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"?>
代码示例末尾的结尾?>
是什么?