1

私はこのようなRSSを持っています:

<item>
<guid isPermaLink="false">2284767032</guid>
<title>title goes here...</title>
<description> Description </description>
<author>author name</author>
<dcterms:valid>start=2012-09-28T17:06:00Z;scheme=W3C-DTF</dcterms:valid>
<media:category scheme="" label="">cat1</media:category>
<media:category scheme="" label="">cat2</media:category>
<media:category scheme="" label="">cat3</media:category>

<media:copyright>Big Company</media:copyright>
<media:keywords>some;keywords;</media:keywords>
<media:group>
<media:content bitrate="643.386" medium="video" duration="72.144" expression="full" fileSize="5802051" framerate="29.97" type="video/x-flv" height="360" url="..." width="640"/>
<media:content bitrate="1242.571" medium="video" duration="72.144" expression="full" fileSize="11205501" framerate="29.97" type="video/x-flv" height="480" url="..." width="854"/>
</media:group>
<link>a234dfasf4f</link>
<plmedia:defaultThumbnailUrl>
  http://url.jpg
</plmedia:defaultThumbnailUrl>
</item>

私はそれを解析するために次のコードを使用しています:

  $feed = simplexml_load_file('http://feedurl.com');
  echo "<pre>";
  print_r($feed);
  echo "</pre>";

問題は、 guid、title、descriptionなどのすべてのタグを取得しているのに、media:categoryorまたはmedia:grouporsomething:anythingが表示されないことです。これらは削除されただけです。

このフィードを失うことなく解析するにはどうすればよいですか?

4

1 に答える 1

1

名前空間が定義されている場所を見つけ、名前空間がマップされる文字列を見つける必要があります。たとえば、media名前空間が次のようにマップされている場合http://example.com/something

echo (string)$feed->children('http://example.com/something')->copyright;

出力:

大企業

SimpleXMLを使用した結果はprint_r()、必ずしも完全な構造を提供するとは限りませんが、要素はそこにあります。

ネストされた要素を取得するには、次のようにしてみてください。

foreach($feed->children('http://example.com/something')->group->children('http://example.com/something')->content as $content)
{
    echo (string)$content->attributes()->bitrate;
}
于 2013-01-17T16:52:54.790 に答える