Как прочитать XML файл в WordPress?
4 мая 2012 г., 09:14:45
Просмотры: 13.8K
Голосов: 3
У меня есть ссылка на фид http://www.wdcdn.net/rss/presentation/library/client/iowa/id/128b053b916ea1f7f20233e8a26bc45d, и мне нужно прочитать все элементы фида, включая кредиты. Вот как выглядит фид:
<item>
<title>
<![CDATA[Dave's Lawnmower Bish Bash]]>
</title>
<link>http://cache.wdcdn.net/cdn/asset/view/client/filmconstruction/package/library/id/918787/format/o/h/503e4d2418da8c167f7a75d25638a35e/?7a6013aef28682d61703dff120d21b12266b54a2a637283d7d4f0a0843a6f755b7d8fa6f17d0ac1585d9530a052e29240a1a3c75fb</link>
<guid>http://filmconstruction.wdcdn.net/l/p/?presentation=a211defdbe060c7e8f42e884b7e8f584#918787</guid>
<description>
<![CDATA[DW_MLA_Lamb_DavesLawnMowerBishBash_30.mov]]>
</description>
<pubDate>Mon, 30 Apr 2012 21:49:55 -0700</pubDate>
<enclosure url="http://cache.wdcdn.net/cdn/asset/view/client/filmconstruction/package/library/id/918787/format/o/h/503e4d2418da8c167f7a75d25638a35e/DW_MLA_Lamb_DavesLawnMowerBishBash_30.mov?7a6013aef28682d61703dff120d21b12266b54a2a637283d7d4f0a0843a6f755b7d8fa6f17d0ac1585d9530a052e29240a1a3c75fb.mov" type="video/quicktime" length="6289971"/>
<media:content url="http://cache.wdcdn.net/cdn/asset/view/client/filmconstruction/package/library/id/918787/format/o/h/503e4d2418da8c167f7a75d25638a35e/DW_MLA_Lamb_DavesLawnMowerBishBash_30.mov?7a6013aef28682d61703dff120d21b12266b54a2a637283d7d4f0a0843a6f755b7d8fa6f17d0ac1585d9530a052e29240a1a3c75fb.mov" fileSize="6289971" type="video/quicktime" duration="0" height="360" width="640"/>
<media:thumbnail url="http://cache.wdcdn.net/cdn/asset/view/client/filmconstruction/package/library/id/918787/format/t/size/lg/h/87884cce4f657e643d3df42ccc623101/library_918787_lg.jpg?7a6013aef28682d61703dff120d21b12266b54a2a637283d7d4f0a0843a6f755b7d8fa6f17d0ac1585d9530a052e29240a1a3c75fb.jpg" height="360" width="640"/>
<media:thumbnail url="http://cache.wdcdn.net/cdn/asset/view/client/filmconstruction/package/library/id/918787/format/t/size/sm/h/87884cce4f657e643d3df42ccc623101/library_918787_sm.jpg?7a6013aef28682d61703dff120d21b12266b54a2a637283d7d4f0a0843a6f755b7d8fa6f17d0ac1585d9530a052e29240a1a3c75fb.jpg" height="101" width="180"/>
<media:credit role="client" scheme="urn:feeds-wiredrive-com:credits">
<![CDATA[MLA]]>
</media:credit>
<media:credit role="agency" scheme="urn:feeds-wiredrive-com:credits">
<![CDATA[BMF]]>
</media:credit>
<media:credit role="director" scheme="urn:feeds-wiredrive-com:credits">
<![CDATA[David Wood]]>
</media:credit>
<media:keywords>
<![CDATA[Humour]]>
</media:keywords>
</item>
Я использовал этот код для чтения содержимого, но не могу получить все кредиты с его помощью:
$file = file_get_contents('http://www.wdcdn.net/rss/presentation/library/client/iowa/id/128b053b916ea1f7f20233e8a26bc45d');
$xml = simplexml_load_string($file);
$doc = new DOMDocument();
$doc->load('http://www.wdcdn.net/rss/presentation/library/client/iowa/id/128b053b916ea1f7f20233e8a26bc45d');
$arrFeeds = array();
foreach ($doc->getElementsByTagName('item') as $node) {
$itemRSS = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'guid' => $node->getElementsByTagName('guid')->item(0)->nodeValue,
'content' => $node->getElementsByTagNameNS('http://search.yahoo.com/mrss/', 'content')->item(0)->getAttribute('url'),
'vwidth' => $node->getElementsByTagNameNS('http://search.yahoo.com/mrss/', 'content')->item(0)->getAttribute('width'),
'vheight' => $node->getElementsByTagNameNS('http://search.yahoo.com/mrss/', 'content')->item(0)->getAttribute('height'),
'thumbnail' => $node->getElementsByTagNameNS('http://search.yahoo.com/mrss/', 'thumbnail')->item(0)->getAttribute('url'),
'credit' => $node->getElementsByTagNameNS('http://search.yahoo.com/mrss/', 'credit')->item(0)->getAttribute('role')
);
array_push($arrFeeds, $itemRSS);
}
Как мне прочитать все кредиты каждого элемента? Может кто-нибудь помочь найти решение этой проблемы? Заранее спасибо.
Комментарии
Все ответы на вопрос
2
0
WordPress включает и использует класс SimplePie для загрузки, кеширования и обработки RSS-лент. Получение данных из пространств имен с его помощью выглядит примерно так:
$feed = fetch_feed( 'http://www.wdcdn.net/rss/presentation/library/client/iowa/id/128b053b916ea1f7f20233e8a26bc45d' );
$items = $feed->get_items();
foreach ( $items as $item ) {
$credit = $item->get_item_tags( 'http://search.yahoo.com/mrss/', 'credit' );
var_dump( $credit );
}
Смотрите fetch_feed()
в Кодексе.

Rarst
100K
4 мая 2012 г. 10:50:40
0
в любом случае, если вы сделаете что-то подобное:
$medias = $node->getElementsByTagName('media');
foreach ( $medias as $media ) {
$media_items[] = $media->nodeValue;
}
$itemRSS = array (
'medias' => $media_items,
// все, что вы сделали
);
вы должны получить свои результаты.

fischi
7.55K
4 мая 2012 г. 09:27:33
Похожие вопросы