我的网站的网站地图是这种格式的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.mywebsite.com//index.html</loc>
<lastmod>2014-08-16</lastmod>
<priority>0.5</priority>
</url>
<url>
// ... etc.
我如何自动从此XML文件创建HTML页面,其中包含针对我网站访问者的格式良好的可点击的站点地图?理想情况下,这应该是一个PHP脚本,它将所需的HTML输出到浏览器。
编辑:我创建了一些代码,您可以在已接受的解决方案中查看。如何优化此代码?答案 0 :(得分:0)
到目前为止,没有人提供解决方案,我编写了自己的解决方案:
<?php
$thisbasedir = '../mywebsite/';
$dom = new DomDocument();
$dom->load($thisbasedir . "sitemap.xml");
$data = $dom->getElementsByTagName('loc');
echo '<!DOCTYPE html>';
echo '<HTML>';
echo '<HEAD>';
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
echo '</HEAD>';
echo '<BODY>';
echo ("<table>");
foreach ($data as $node)
{
echo '<tr>';
$thisurl = $node->textContent;
$thisbasename = basename($thisurl);
$thistitle = get_title_tag_from_htmlpage($thisbasedir . $thisbasename);
$thisdescription = get_description_from_htmlpage($thisbasedir . $thisbasename);
echo ("<td>" .
'<a href="' . $thisurl . '">' .
$thistitle . ' (' . $thisdescription . ')' .
'</a>' .
"</td>");
echo '</tr>';
}
echo ("</table>");
echo '</BODY>';
echo '</HTML>';
function get_description_from_htmlpage($ahtmlfile)
{
$tags = get_meta_tags($ahtmlfile);
$thisdescription = $tags['description'];
if (isset($thisdescription))
return $thisdescription;
else
return 'No description';
}
function get_title_tag_from_htmlpage($ahtmlfile)
{
$thisfilecontents = file_get_contents($ahtmlfile);
if (preg_match('/<title>(.+)<\/title>/', $thisfilecontents, $matches) && isset ($matches[1]))
return $matches[1];
else
return "No Title";
}
?>