У меня есть карта сайта со многими URL. Что-то вроде:
<url>
<loc>
http://site.com/
</loc>
<priority>
0.50
</priority>
<changefreq>
daily
</changefreq>
<lastmod>
2011-07-27T06:58:53+00:00
</lastmod>
</url>
<url>
<loc>
http://site.com/link
и т. Д. И т. Д. *
Мне нужно получить все ссылки в карте сайта, ничего больше.
Я пробовал:
$links = file('sitemap.xml', FILE_IGNORE_NEW_LINES);
foreach($links as $link) {
echo $link;
}
Теперь, когда отображаются все ссылки и пропущены все <loc>, <priority>
и т. Д., Но все еще включены изменения frequency, lastmod
и т. Д. И т.
Итак, результат выглядит так:
http://site.com/ 11 0.50 12 daily 13 2011-07-27T06:58:53+00:00 14 15 16 http://site.com/page.html 17 0.40 18 daily 19 2011-07-
и так далее ...
Мне нужно просто получить ссылки и поместить их в массив. Есть идеи?
Спасибо.
EDIT:
Вот код, который я использую:
<code>$urls = array();
$xml='sitemap.xml';
$DomDocument = new DOMDocument();
$DomDocument->preserveWhiteSpace = false;
$DomDocument->loadXML("$xml"); // $DOMDocument->load('filename.xml');
$DomNodeList = $DomDocument->getElementsByTagName('from');
foreach($DomNodeList as $url) {
$urls[] = $url->nodeValue;
}
//display it
echo "<pre>";
print_r($urls);
echo "
";
Что возвращает ошибку: Warning: DOMDocument::loadXML() [domdocument.loadxml]: Start tag expected, '<' not found in Entity, line: 1
Итак, я попытался проверить, может ли он даже загрузить xml: я изменил имя файла xml на недопустимое ($xml='sit___emap.xml';
)
Я должен был получить сообщение о том, что он не может открыть файл, но вместо этого он обнаружил ту же ошибку, что и раньше, с правильным именем файла. Так что я не думаю, что это карта сайта.