我使用以下脚本来获取RSS标题和RSS提要的内容。它的结构是:(我想我没有犯任何错误)
<div id="feedBody">
<div id="feedContent">
<div class="entry">
<h3>TITLE OF POST</h3>
<div base="http://feeds.feedburner.com/blogspot/hyMBI"
class="feedEntryContent"
> CONTENT OF POST </div>
</div>
</div>
</div>
<?php
$dom = new DOMDocument;
libxml_use_internal_errors(TRUE);
$dom->loadHTMLFile('http://feeds.feedburner.com/blogspot/hyMBI');
libxml_clear_errors();
$xPath = new DOMXPath($dom);
$links = $xPath->query('????????????????');
foreach($links as $link) {
printf("%s \n", $link->nodeValue);
}
?>
我应该使用什么xPath来获取数据?有没有办法让他们分开? 万分感谢,希望这是我对项目的最后一个问题...
答案 0 :(得分:0)
首先,您应该使用load
加载XML,而不是loadHTMLFile
。
根据您的变量名称“$ links”判断,我猜您想要<link>
元素中的<item>
元素的值。因此,构造一个xpath查询,其中只说://item/link
。
答案 1 :(得分:0)
基本XPath://div[@class="entry"]
为您提供所有条目的数组。您可以使用//div[@class="entry"][1]
获取第一个(或唯一)条目。有了它,您可以使用h3
来获取标题节点的文本,并使用div[1]
来获取内容(如果它保证只有一个,否则指定类)。
如果您愿意,可以像//div[@class="entry"][1]/h3
一样将它们放在一起,这样您只需查询根节点即可。否则,将新节点保存为下一个查询,例如:
$entries = $xPath->query('//div[@class="entry"][1]');
foreach($entry in $entries) {
$title = $xPath->evaluate('h3[1]',$entry);
$post = $xPath->evaluate('div[1]',$entry);
}
如果你的RSS返回了一组帖子,你可以不用第一个[1]并以这种方式遍历整个组。