我有一个包含名称空间的 RSS 提要。我需要在结果中显示命名空间信息以及常规节点。我正在尝试 xpath,但现在卡住了,似乎无法找到满足我需要的答案(或者至少是我理解的答案——他们可能正在回答我的问题,但我不明白。)
这是我的 RSS 提要(进行了一些编辑以删除多余的节点):
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
<channel>
<item>
<title>...</title>
<link>...</link>
<description>...</description>
<author>...</author>
<pubDate>05/14/2008</pubDate>
<media:content url="http://www.url.com">
<media:title>...</media:title>
</media:content>
</item>
<item>
<title>...</title>
<link>...</link>
<description>...</description>
<author>...</author>
<pubDate>06/17/2008</pubDate>
<media:content url="http://www.url.com">
<media:title>...</media:title>
</media:content>
</item>
</channel>
这是到目前为止的代码:
if (file_exists($filePath)) {
$items = simplexml_load_file($filePath);
$items->registerXPathNamespace("media","http://search.yahoo.com/mrss/");
$items = $items->xpath('//item');
usort($items, "toSort"); // sorts using an included function
// output the file
foreach($items as $item) {
echo '<div class="grayBx">';
echo $item->content->attributes()->url;
echo '<h2>' . $item->title . '</h2>';
echo '<p>' . $item->description . '</p>';
echo '<p><a href="' . $item->link . '">read more >></a></p>';
echo '</div>';
echo '<div class="clearBoth"> </div>';
}
}
现在,据我了解,xpath 将 simplexml_load_file 更改为数组类型,并且在大多数情况下也可以更轻松/更快地进行搜索。问题是,当我使用 xPath 时,它会从结果中删除 media: 命名空间,而 media 结果是缩略图的存储位置,我需要在页面上显示图像。
我被困住了,我不确定这是否是正确的道路。任何人都可以帮忙吗?