在PHP中创建/写入XML文件?
问题描述:
我目前有一个用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函数以及。我一直在试图弄清楚这几天,但没有一个我被告知尝试的解决方案已经奏效。任何帮助或见解将不胜感激!
答
根据你的代码,你已经构建XML内容自己。 XML文件只是常规的文本文件,所以在这种情况下,您不需要任何验证和呈现的特殊XML函数。相反,你可以将文本只是保存到.xml文件:
file_put_contents('/tmp/test.xml', $xmlBody);
file_put_contents
让你放弃所有的fopen/fwrite的功能,所以它是将内容写入到磁盘的最简单方法。
在另一方面,如果你想学习如何构建一个结构化的XML文档与所有的钟声和一致性的口哨声,抬头SimpleXML
或XMLWriter
。这种方式会带来更多的开销,但手动完成所有标记可能会很笨重,尤其是当一个错字可能会使整个文档无效时。
答
这将帮助你
$xml_msg_in = fopen('/tmp/test.xml',"w");
fwrite($xml_msg_in,$xmlBody);
fclose($xml_msg_in);
答
你试过file_put_contents('/path/to/output.xml', $xmlBody);
答
只是为了解,你的
echo $xmlBody;
行至少按预期工作?-
如果您尝试在某处没有成功地使用XML文件,则请注意您将XML标头丢失为XML文件的第一行。
<?xml version="1.0"?>
-
注意,根据在数据库中的数据,该头可能需要指定较宽的编码如UTF-16。但是你应该选择你想在该数据库中允许的字符集。
<?xml version="1.0" encoding="UTF-16"?>
什么是你的代码示例结束后
?>
?
对于可伸缩性和维护,您应该查看序列化。看看http://pear.php.net/package/XML_Serializer/redirected – 2012-03-07 06:11:43
'$ doc'?你没有使用'DOMDocument'或'SimpleXML',对吧?因此,没有定义'save'方法。 – Raptor 2012-03-07 06:14:23
你得到的解决方案? – 2012-03-07 06:27:50