[英]Parsing RSS/XML in php with namespaces
我有一些看起來像這樣的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:category
或media:group
或something:anything
出現-它們只是被剝離了。
我如何解析此提要而不丟失它們?
您需要找到命名空間的定義位置,並找到命名空間映射到的字符串。 因此,例如,如果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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.