Come leggere un file XML in WordPress?

4 mag 2012, 09:14:45
Visualizzazioni: 13.8K
Voti: 3

Ho un link di feed http://www.wdcdn.net/rss/presentation/library/client/iowa/id/128b053b916ea1f7f20233e8a26bc45d e devo leggere tutti gli elementi del feed inclusi i crediti. Ecco come viene visualizzato il feed:

<item>
  <title>
    <![CDATA[Dave&#39;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>

Ho utilizzato questo codice per leggere il contenuto ma non riesco a ottenere tutti i crediti con questo codice:

$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);
}

Come posso leggere tutti i crediti di ogni elemento? Qualcuno può aiutarmi a trovare una soluzione per questo? Grazie in anticipo.

2
Commenti

questa è più una domanda su PHP che su WordPress.

fischi fischi
4 mag 2012 09:23:59

Non penso che questa domanda debba essere chiusa. L'OP sta chiedendo come farlo in WP. Dal suo codice si può vedere che non è il modo corretto in WP. Qualcuno potrebbe rispondere fornendo esempi utilizzando il modo corretto in WP per leggere un feed XML.

Scott Scott
4 mag 2012 10:50:41
Tutte le risposte alla domanda 2
0

WordPress include e avvolge la classe SimplePie per il download, la memorizzazione nella cache e l'elaborazione dei feed. Recuperare dati con namespace sarebbe qualcosa del genere:

$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 );
}

Vedi fetch_feed() nel Codex.

4 mag 2012 10:50:40
0

comunque, se fai qualcosa del genere:

$medias = $node->getElementsByTagName('media');
foreach ( $medias as $media ) {
    $media_items[] = $media->nodeValue;
}
$itemRSS = array (
    'medias' => $media_items,
    // tutte le operazioni che hai fatto
);

dovresti ottenere i tuoi risultati.

4 mag 2012 09:27:33