我正在使用PHP动态生成XML站点地图。生成部分运行流畅,但无法将结果保存为XML文件。这是我写的PHP:
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8" ?><urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"/>');
$node = $xml->addChild('url');
$node->addChild('loc', 'http://www.pb.com/blog/');
$node->addChild('changefreq', "daily");
$node->addChild('priority', "1");
$connect = dbconn(PROJHOST, POSTSDB, POSTSUSR, POSTSPWD);
$sql = "SELECT * FROM tblposts ORDER BY id";
$query = $connect->prepare($sql);
if($query->execute()) {
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
if($rows){
foreach($rows as $row){
$post_date = $row['post_date'];
$node = $xml->addChild('url');
$node->addChild('loc', trim("http://www.pb.com/blog/" . $row['post_name']));
$node->addChild('lastmod', str_replace(' ', 'T', $row['post_date']) . "-05:00");
$node->addChild('changefreq', "weekly");
$node->addChild('priority', "0.6");
}
}
}
Header('Content-type: text/xml');
print($xml->asXML());
// $dom->preserveWhiteSpace = FALSE;
$xml->save('sitemap.xml');
投掷的致命错误是:
调用未定义的方法SimpleXMLElement :: save() 第79行/xxx/xxx/xxx/sandboxgenerate_sitemap.php
任何替代方案?
答案 0 :(得分:1)
http://php.net/manual/de/class.simplexmlelement.php列出了这些方法,如果你想创建一个文件,我认为$xml->asXML('sitemap.xml')
可以完成这项工作。
答案 1 :(得分:1)
SimpleXMLElement类没有名为save()的方法。而是使用asXML(),就像你在上面的行中所做的那样,并传递可选的$ filename参数。指定此参数将导致XML保存到文件而不是显示。这里有进一步的文档:http://php.net/manual/en/simplexmlelement.asxml.php