是否可以将以下输出保存为XML文件,因为它当前只显示在源文件中?
$host = "localhost"; // host name
$user = "#"; // database user name
$pass = "#"; // database password
$database = "#"; // database name
// connecting to database
$connect = @mysql_connect($host,$user,$pass)or die (@mysql_error());
// selecting database
@mysql_select_db($database,$connect) or die (@mysql_error());
// default header(don't delete)
header("Content-Type: text/xml;charset=iso-8859-1");
echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
// mytable = your content table name
$query = @mysql_query("SELECT * FROM urls");
while($row = @mysql_fetch_array($query)){
// [url] = content url
$url = $row['url'];
// [time] = content date
$date = date("Y-m-d", $row['time']);
// NO CHANGES BELOW
echo
'<url>
<loc>' . $url .'</loc>
<lastmod>'. $date .'</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
';
}
echo '</urlset>';
我知道我可以使用.htaccess将文件视为XML格式,但我希望将数据保存到实际文件中。
答案 0 :(得分:2)
您可以尝试更改每个回显以将该行附加到字符串变量,例如:
// Instead of
echo '<?xml version="1.0"?>';
echo '<url>';
// etc.
$xml = '<?xml version="1.0"?>';
$xml .= '<url>';
// and so on
然后使用其中一个文件功能保存到文件中。 file_put_contents
是一种简单的方法:
file_put_contents("/path/to/file.xml", $xml);
更强大的解决方案,如果你想进一步发展,可以使用DOM模块来构建XML结构:
$document = new DOMDocument("1.0");
$root = $document->createElement("urlset");
$root->setAttribute("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
$document->appendChild($root);
while ($row = mysql_query($query)) {
$item = $document->createElement("url");
$root->append($item);
// etc.
}
echo $document->saveXML();
答案 1 :(得分:1)
注意:这个答案假定“保存文件”是指“当有人查看页面时触发浏览器中的”另存为“对话框”。
您的代码存在一些需要解决的问题。
答案 2 :(得分:0)
使用输出缓冲区
ob_start();
... do everything you actually did before ...
$content = ob_get_contents();
ob_end_clean();
//Write to a file
file_put_contents('filename.xml', $content);
这就是全部...
答案 3 :(得分:0)
使用fwrite应该是直截了当的:
$f = fopen('data.xml', 'w'); //open a file for writing
fwrite($f, $myxmltext); // write some things to it
fclose($f); // close it when finished