更新为了让某些人更清楚地知道发生了什么,我的页面不显示文档树(我第一次看到这个)。我的xml内容只有一行,没有任何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标签,除非我查看源代码。以下是我的路线文件中的相关代码:
Router::parseExtensions('xml');
Router::connect('/sitemap', array('controller' => 'sitemaps', 'action' => 'index'));
我的app / views / layouts / xml / default.ctp文件:
<?php
header("content-type: text/xml");
echo $this->Xml->header();
echo $content_for_layout;
?>
我的app / views / sitemaps / 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 :(得分:0)
我遇到同样的问题,我想我找到了解决方案。我认为你的HTML / XML代码前面有空格
<-- space here--><?xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
如果你在PHP结束标记后有空格,你可以尝试在你的sitemap_controller.php中找到
?>__space here__