1

我有以下代码,但我想要正确的站点地图标准。

我的代码

$xml = new DomDocument('1.0', 'utf-8'); 
$xml->formatOutput = true; 
$products= $xml->createElement('url'); 
$product = $xml->createElement('url'); 
$xml->appendChild($products); 
$products->appendChild($product); 
$product->appendChild(new DomAttr('loc', '123')); 
$xml->save("data.xml");

但所述代码的输出是lile:

<?xml version="1.0" encoding="utf-8"?>
<url>
<url loc="123"/>
</url>

但我想要以下标准......

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
      <loc>http://www.example.com/</loc>
      <lastmod>2012-08-11T04:08:53+01:00</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.5</priority>
   </url>
</urlset>

请在这方面帮助我。

4

1 回答 1

5

您已经证明可以通过您的语法创建 XML 文档 - 只需重新创建标准模板。

例如,我会假装您的网站信息存储在数组中,例如:

$yourSiteContent = array(
    array('permalink' => 'http://www.somesite.com/someurl1', 'updated' => '2012-08-11T04:08:53+01:00'),
    array('permalink' => 'http://www.somesite.com/someurl2', 'updated' => '2012-09-11T04:08:53+01:00'),
    array('permalink' => 'http://www.somesite.com/someurl3', 'updated' => '2012-10-11T04:08:53+01:00')
);

然后回到你的例子:

$xml = new DomDocument('1.0', 'utf-8'); 
$xml->formatOutput = true; 

// creating base node
$urlset = $xml->createElement('urlset'); 
$urlset -> appendChild(
    new DomAttr('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9')
);

    // appending it to document
$xml -> appendChild($urlset);

// building the xml document with your website content
foreach($yourSiteContent as $entry)
{

    //Creating single url node
    $url = $xml->createElement('url'); 

    //Filling node with entry info
    $url -> appendChild( $xml->createElement('loc', $entry['permalink']) ); 
    $url -> appendChild( $lastmod = $xml->createElement('lastmod', $entry['updated']) ); 
    $url -> appendChild( $changefreq = $xml->createElement('changefreq', 'monthly') ); 
    $url -> appendChild( $priority = $xml->createElement('priority', '0.5') ); 

    // append url to urlset node
    $urlset -> appendChild($url);

}

$xml->save("data.xml");

剩下的就看你了。

于 2012-08-23T01:53:33.110 回答