【问题标题】:How to fetch an RSS attribute with PHP如何使用 PHP 获取 RSS 属性
【发布时间】:2012-02-03 14:27:38
【问题描述】:

我有以下代码来解析 RSS 提要:

$doc = new DOMDocument();                                                                                                                                                                                                                                                   
$doc->load('http://gdata.youtube.com/feeds/api/users/user/uploads?orderby=viewCount');
$arrFeeds = array();
foreach ($doc->getElementsByTagName('entry') as $node) {
  $itemRSS = array ( 
    'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
    'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
    'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
    'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue
  );
  array_push($arrFeeds, $itemRSS);
}

Feed 是这样的:

<title type='text'>Handelswetenschappen</title>
<link rel='alternate' type='text/html' href='http://www.youtube.com/watch?v=eDiF7jVsoAQ&amp;feature=youtube_gdata'/>
<media:group>
  <media:category label='Onderwijs' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>Education</media:category>
  <media:content url='http://www.youtube.com/v/eDiF7jVsoAQ?version=3&amp;f=user_uploads&amp;app=youtube_gdata' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='253' yt:format='5'/>
  <media:content url='rtsp://v3.cache4.c.youtube.com/CigLENy73wIaHwkEoGw17oU4eBMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='253' yt:format='1'/>
  <media:content url='rtsp://v6.cache8.c.youtube.com/CigLENy73wIaHwkEoGw17oU4eBMYESARFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='253' yt:format='6'/>
  <media:description type='plain'>Wil jij meer weten over de opleiding Handelswetenschappen? Bekijk dan snel dit filmpje. Studenten Lise en Jean-Marie vertellen je alles over Handelswetenschappen studeren. Ze gaan langs bij de decaan, bij een oud-student en bij toekomstig werkgever.</media:description>
  <media:keywords>HUB, hubrussel, hogeschool, universiteit, brussel, unief, studie, student, studeren, studentenleven, kot, examen, les, cursus, prof, docent, diploma, bachelor, master, professioneel, academisch, opleiding, blokken, eindwerk, eindproef, masterproef, stage, studentenclub, cantus, studiebegeleiding, geslaagd, spieken, fuif, uitgaan, job, studentenjob, handelswetenschappen, economie, TW, toegepaste, economische, wetenschappen, ehsal</media:keywords>
  <media:player url='http://www.youtube.com/watch?v=eDiF7jVsoAQ&amp;feature=youtube_gdata_player'/>
  <media:thumbnail url='http://i.ytimg.com/vi/eDiF7jVsoAQ/0.jpg' height='360' width='480' time='00:02:06.500'/>
  <media:thumbnail url='http://i.ytimg.com/vi/eDiF7jVsoAQ/1.jpg' height='90' width='120' time='00:01:03.250'/>
  <media:thumbnail url='http://i.ytimg.com/vi/eDiF7jVsoAQ/2.jpg' height='90' width='120' time='00:02:06.500'/>
  <media:thumbnail url='http://i.ytimg.com/vi/eDiF7jVsoAQ/3.jpg' height='90' width='120' time='00:03:09.750'/>
  <media:title type='plain'>Handelswetenschappen aan de HUB</media:title>
  <yt:duration seconds='253'/>
</media:group>

使用上面的代码,我可以获取标题和描述。 我需要知道的是如何获取链接,因此实际上是项目“链接”的属性,即 media:content url 或 media:player url。

【问题讨论】:

  • 只是一个评论 - RSS 提要是一个 XML 文档,因此您最好使用 SimpleXML 或其他 XML 解析器而不是 DOMDocument。
  • 我都看过了,为什么一个比另一个好?
  • 嗯,DOM 解析器旨在解析 DOM 树,并为此提供特定的功能。 XML 解析器旨在解析 XML,因此可以帮助您处理自定义名称空间(

标签: php dom rss


【解决方案1】:
$link  = $element->getAttribute("href");

所以我猜你会想要这样的东西,修改你写的那行:

'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,

改成这样:

'link' => $node->getElementsByTagName('link')->getAttribute('href'),

【讨论】:

    猜你喜欢
    • 2021-04-30
    • 2018-02-13
    • 2016-02-21
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 2018-02-25
    相关资源
    最近更新 更多