2012-10-02 31 views
0

UPDATE爲了讓它更清楚一些有關正在發生的事情,我的頁面沒有顯示文檔樹(我第一次見到它)。只是我的XML內容的一長串,沒有任何XML元素/標籤。無法在cakephp中寫入xml站點地圖

我跟着this tutorial在cakephp中創建動態站點地圖。本教程是在2008年編寫的,我(已繼承)在cakephp 1.3應用程序中工作(我假設這個教程適用於1.3?我已經看過其他幾乎使用2009年和2010年相同代碼的人。 )除了令人痛心的事實,我的查詢,沒有一個,當我瀏覽到mysite.com/sitemap.xml是生產什麼,我的輸出是這樣的:

http://www.site.com/ daily 1.0 http://www.site.com/gulf-coast-finest/3 2012-10-01T19:00:00Z weekly 0.9 http://www.site.com/gulf-coast-finest/4 2012-10-01T19:00:00Z weekly 0.9 

當我查看源代碼「我得到正確格式的XML (有,我很想念關鍵數據除外),如下圖所示:

<?xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
<url> 
    <loc>http://www.site.com/</loc> 
    <changefreq>daily</changefreq> 
    <priority>1.0</priority> 
</url> 
<!-- posts--> 

<url> 
    <loc>http://www.site.com/gulf-coast-finest/3</loc> 
    <lastmod>2012-10-01T19:00:00Z</lastmod> 
    <changefreq>weekly</changefreq> 
    <priority>0.9</priority> 
</url> 

<url> 
    <loc>http://www.site.com/gulf-coast-finest/4</loc> 
    <lastmod>2012-10-01T19:00:00Z</lastmod> 
    <changefreq>weekly</changefreq> 
    <priority>0.9</priority> 
</url> 
</urlset> 
.... 

我撕裂我的頭髮,不知道爲什麼沒有空格或XML標籤,除非I v來源。下面是我的路線文件中的相關代碼:

Router::parseExtensions('xml'); 
Router::connect('/sitemap', array('controller' => 'sitemaps', 'action' => 'index')); 

我的應用程序/視圖/佈局/ XML/default.thtml中的文件:

<?php 
header("content-type: text/xml"); 
echo $this->Xml->header(); 
echo $content_for_layout; 
?> 

我的應用程序/視圖/網站地圖/ XML/index.ctp文件:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
<url> 
    <loc><?php echo Router::url('/',true); ?></loc> 
    <changefreq>daily</changefreq> 
    <priority>1.0</priority> 
</url> 
<!-- posts--> 
<?php foreach ($static as $s):?> 
<url> 
    <loc><?php echo Router::url('/gulf-coast-finest/'.$s['Article']['Article.link_txt'].'/'.$s['Article']['id'],true); ?></loc> 
    <lastmod><?php echo $time->toAtom('2012-10-01 19:00:00'); ?></lastmod> 
    <changefreq>weekly</changefreq> 
    <priority>0.9</priority> 
</url> 
<?php endforeach; ?> 
</urlset> 

和我明明完成搞砸控制器:

<?php 
class SitemapsController extends AppController{ 

var $name = 'Sitemaps'; 
var $uses = array('Category', 'Listing', 'Article', 'Location'); 
var $helpers = array('Time'); 
var $components = array('RequestHandler'); 
function beforeFilter() { 
    //debug logs will destroy xml format, make sure were not in drbug mode 
Configure::write ('debug', 0); 

} 
function index(){ 
    $this->RequestHandler->respondAs('xml'); 
    $this->viewPath .= '/xml'; 
    $this->layoutPath = 'xml'; 
    $a=$this->Article->find('all', array('fields'=>array('Article.id', 'Article.link_txt'))); 
    $this->set('static', $a); 


} 
} 
?> 

非常重要的缺失數據問題可能適用於另一個問題。 XML文件是一行,沒有標籤可見的人是不是我可以。我想知道它爲什麼這樣做

回答

0

我有同樣的問題,我想我找到了解決方案。我想你在你的HTML/XML代碼前面已經空間

<-- space here--><?xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 

,你可以嘗試在sitemap_controller.php找到,如果你的PHP關閉標籤後已經一個空間

?>__space here__