[英]save xml file on zend
這是我的代碼。 但是我不知道為什么這段代碼不能創建xml文件並且不顯示任何錯誤!
它完美地顯示了xml結果,但是無法在確定的路徑上保存該文件!
public function indexAction()
{
// XML-related routine - <urlset>
$xml = new DOMDocument('1.0', 'utf-8');
$masterRoot = $xml->createElement('urlset');
$xml->appendChild($masterRoot);
$publicpath = "/public";
$data = array(
array('lastmod'=> date("Y-m-d"),'loc' => $this->view->serverUrl().$publicpath ,'changefreq' =>'daily','priority' =>'1.00'),
array('lastmod'=> date("Y-m-d"),'loc' => $this->view->serverUrl().$publicpath ."/about us" ,'changefreq' =>'daily','priority' =>'0.98'),
array('lastmod'=> date("Y-m-d"),'loc' => $this->view->serverUrl().$publicpath ."/contact us",'changefreq' =>'daily','priority' =>'0.98'),
array('lastmod'=> date("Y-m-d"),'loc' => $this->view->serverUrl().$publicpath ."/useful links",'changefreq' =>'daily','priority' =>'0.98')
);
$this->_url($xml,$masterRoot,$data);
$output = $xml->saveXML();
$xml->save($this->view->serverUrl() . "/sitemap.xml" );
// Both layout and view renderer should be disabled
Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setNoRender(true);
Zend_Layout::getMvcInstance()->disableLayout();
// Setting up headers and body
$this->_response->setHeader('Content-Type', 'text/xml; charset=utf-8')->setBody($output);
}
protected function _url($xml,$masterRoot,$allData)
{
foreach($allData as $data)
{
// <url>
$root = $xml->createElement('url');
$masterRoot->appendChild($root);
//<loc>http://www.example.com/</loc>
$elem = $xml->createElement('loc');
$root->appendChild($elem);
$elemtext = $xml->createTextNode($data['loc']);
$elem->appendChild($elemtext);
//<lastmod>2005-01-01</lastmod>
$elem = $xml->createElement('lastmod');
$root->appendChild($elem);
$elemtext = $xml->createTextNode($data['lastmod']);
$elem->appendChild($elemtext);
//<changefreq>monthly</changefreq>
$elem = $xml->createElement('changefreq');
$root->appendChild($elem);
$elemtext = $xml->createTextNode($data['changefreq']);
$elem->appendChild($elemtext);
//<priority>0.8</priority>
$elem = $xml->createElement('priority');
$root->appendChild($elem);
$elemtext = $xml->createTextNode($data['priority']);
$elem->appendChild($elemtext);
}
}
這兩個功能在控制器類中
什么回報
$this->view->serverUrl()
我認為它類似於http://www.xxxx.xx ,因為它返回一個URL。
這可能是問題嗎? 你需要類似的東西
$xml->save("foo.xml");
$xml->save($this->view->serverUrl() . "/sitemap.xml");
您正在嘗試保存到完整的HTTP URL。 除非您的服務器支持PUT
方法上傳(我懷疑,這是一件好事),否則它將無法正常工作。
DOMDocument::saveXML()
需要本地文件系統路徑。 由於您似乎想將其保存在文檔根目錄中,因此我很懷疑:
$xml->save("sitemap.xml");
...會做的工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.