私のSquarespaceブログのRSSフィードにリンクされた私のウェブサイトに簡単な「ニュース」ウィジェットを作成したいと思います。特定のXMLノード属性を表示する方法は?
RSSフィードをここで見つけることができます:私は私のCURL関数からXMLデータをロードするとhttps://weboxsite.squarespace.com/?format=rss
、私は()私のXMLファイルをしますprint_rときのノードのいくつかを見ることができません。
特に、ノード属性を取得したいとします。<media>
私の<media>
ノードの属性を取得するときは、url属性を取得できません。
私は簡単な読書のためにウェブからの結果を単純化しました。
<item>
<title>Google Disque : un outil indispensable</title>
<category>Google drive</category>
<dc:creator></dc:creator>
<pubDate>Wed, 22 Jun 2016 21:25:37 +0000</pubDate>
<link>
http://blogue.webox.site/touslesarticles/2016/6/22/google-disque-un-outil-indispensable
</link>
<guid isPermaLink="false">
5769a85b9de4bbf4535c1896:5769a8f1bebafb833a859939:576b01e48419c2d2589b7264
</guid>
<description>
My excerpt....
</description>
<content:encoded>
<![CDATA[
<p>My content....</p>
]]>
</content:encoded>
<media:content type="image/jpeg" url="http://static1.squarespace.com/static/5769a85b9de4bbf4535c1896/5769a8f1bebafb833a859939/576b01e48419c2d2589b7264/1466630737869/1500w/googledisque_bg.jpg" medium="image" isDefault="true" width="510" height="334">
<media:title type="plain">Google Disque : un outil indispensable</media:title>
</media:content>
</item>
**主な問題は、**ここ
<media:content type="image/jpeg" url="http://static1.squarespace.com/static/5769a85b9de4bbf4535c1896/5769a8f1bebafb833a859939/576b01e48419c2d2589b7264/1466630737869/1500w/googledisque_bg.jpg" medium="image" isDefault="true" width="510" height="334">
<media:title type="plain">Google Disque : un outil indispensable</media:title>
</media:content>
は私のコードは
<?php
$limit = 4;
$c=curl_init('https://weboxsite.squarespace.com/?format=rss');
curl_setopt($c, CURLOPT_USERAGENT,'nesss');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
$r=curl_exec($c);
curl_close($c);
$rss = new DOMDocument();
$rss->loadxml($r);
$feed = array();
foreach ($rss->getElementsByTagName('item') as $node) {
$item = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
'media' => $node->getElementsByTagName('media')->item(0)->nodeValue,
'cat' => $node->getElementsByTagName('category')->item(0)->nodeValue
);
array_push($feed, $item);
}
for($x = 0; $x < $limit; $x++) {
$title = str_replace(' & ', ' & ', $feed[$x]['title']);
$link = $feed[$x]['link'];
$desc = $feed[$x]['media'];
$cat = $feed[$x]['cat'];
echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong></p>';
echo '<p>'.$cat.'</p>';
}
?>
これまでのところで、私はこの'media' => $node->getElementsByTagName('media')->item(0)->nodeValue
を行うことは、それを行うための良い方法ではないことを知っていますその値をレンダリングしようとするときに発生します。
私は'media'=> $node->getElementsByTagName('media')->item(0)->getAttribute('url')
にしようとしましたが、エラーが発生しています。
Call to a member function getAttribute() on null in ...
ノードはメディア:コンテンツだけではなく、この名前が変更されたイベントだと思うかもしれません。
どこかで見つからないものがありますか?
お試しください - > [0] ' – JustOnUnderMillions
私は自分の経験でできることすべてをほとんど試してみましたが、より具体的になりますか? –
最後のコメントを忘れてしまった。 XMLの 'media'と' content'と 'dc'のNAMESPACESには問題があります。ここをクリックしてください:http://php.net/manual/en/domdocument.getelementsbytagnamens.php – JustOnUnderMillions