2017-01-24 2 views
0

Я использую PHP для динамического создания XML-карты сайта. Часть генерации работает плавно, но я как-то не могу сохранить результаты в виде XML-файла. Вот PHP я писал:Не удалось сохранить динамически созданный 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 :: сохранить() в /xxx/xxx/xxx/sandboxgenerate_sitemap.php на линии 79

Любая альтернатива?

+0

Когда вы получаете такие проблыки, как это ___ [Прочтите руководство по flippin. То, что там есть] (http://php.net/manual/en/book.simplexml.php) ___ Где находится метод сохранения? Нигде – RiggsFolly

+0

Ничего себе. Не оправдываясь, но грубость на самом деле не оправдалась. Спасибо за помощь. – TheLearner

+0

используйте функцию 'file_put_contents()' в PHP для записи в файл. – mike510a

ответ

1

Класс SimpleXMLElement не имеет метода, называемого save(). Вместо этого используйте asXML(), как и в строке выше, и передайте ему необязательный параметр $ filename. Указание этого параметра приведет к тому, что XML будет сохранен в файле, а не отображен. Дальнейшая документация здесь: http://php.net/manual/en/simplexmlelement.asxml.php

Смежные вопросы