从XML站点地图获取所有链接,并将它们放入数组中?

2 php xml sitemap

我有一个包含许多网址的站点地图.就像是:

<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
Run Code Online (Sandbox Code Playgroud)

等等....

我需要获取站点地图中的所有链接,没有别的.

我试过了:

$links = file('sitemap.xml', FILE_IGNORE_NEW_LINES);

foreach($links as $link) {
    echo $link;
}
Run Code Online (Sandbox Code Playgroud)

现在回声所有链接并离开所有<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-
Run Code Online (Sandbox Code Playgroud)

等等....

我需要获取链接并将其放入数组中.有任何想法吗?

谢谢.

编辑:

这是我正在使用的代码:

$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 "</pre>";
Run Code Online (Sandbox Code Playgroud)

哪个返回错误: Warning: DOMDocument::loadXML() [domdocument.loadxml]: Start tag expected, '<' not found in Entity, line: 1

所以我试着测试它是否甚至可以加载xml:我将xml文件名改为无效的一个($xml='sit___emap.xml';)

我应该得到一个错误,说它无法打开文件,但它提出了与以前相同的错误,并设置了正确的文件名.所以我不认为它是站点地图.

Lev*_*son 7

我无法得到@ AndreyKnupp的例子.这对我有用:

$urls = array();  

$DomDocument = new DOMDocument();
$DomDocument->preserveWhiteSpace = false;
$DomDocument->load('filename.xml');
$DomNodeList = $DomDocument->getElementsByTagName('loc');

foreach($DomNodeList as $url) {
    $urls[] = $url->nodeValue;
}

//display it
echo "<pre>";
print_r($urls);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)