2012-07-23 182 views
0

我在從我的iTunes XML源獲取信息有些麻煩,你可以偷看這裏:http://c3carlingford.org.au/podcast/C3CiTunesFeed.xml閱讀iTunes的XML文件

我需要從每個內部<item>標籤獲取信息。其中之一的例子如下:

<item> 
    <title>What to do when a viper bites you</title> 
    <itunes:subtitle/> 
    <itunes:summary/> 
    <!-- 4000 Characters Max ******** --> 
    <itunes:author>Ps. Phil Buechler</itunes:author> 
    <itunes:image href="http://www.c3carlingford.org.au/podcast/itunes_cover_art.jpg"/> 
    <enclosure url="http://www.ccccarlingford.org.au/podcast/C3C-20120722PM.mp3" length="14158931" type="audio/mpeg"/> 
    <guid isPermaLink="false">61bc701c-b374-40ea-bc36-6c1cdaae8042</guid> 
    <pubDate>Sun, 22 Jul 2012 19:30:00 +1100</pubDate> 
    <itunes:duration>40:01</itunes:duration> 
    <itunes:keywords> 
     Worship, Reach, Build, Holy Spirit, Worship, C3 Carlingford 
    </itunes:keywords> 
</item> 

我現在已經取得了一些成功! 我已經能夠拿到冠軍了這一切:

<?php 
    $dom = new DOMDocument(); 
    $dom->preserveWhiteSpace = false; 
    $dom->load('http://c3carlingford.org.au/podcast/C3CiTunesFeed.xml'); 
    $items = $dom->getElementsByTagName('item'); 

    foreach($items as $item){      
     $title = $item->getElementsByTagName('title')->item(0)->nodeValue; 
      echo $title . '<br />'; 
    }; 

?> 

但我似乎無法得到任何東西了...我是新來的這一切!


所以我需要出去包括:

  1. <itunes:author>值。
  2. <enclosure>標籤

會有人幫我獲得這兩個值進行url屬性值?

+0

爲什麼DOMDocument而不是SimpleXML? http://php.net/manual/en/book.simplexml.php – 2012-07-23 12:43:35

回答

5

您可以使用DOMXPath做到這一點,讓您的生活輕鬆了許多:

$doc = new DOMDocument(); 
$doc->preserveWhiteSpace = false; 
$doc->loadXML($xml); // $xml = file_get_contents("http://www.c3carlingford.org.au/podcast/C3CiTunesFeed.xml") 

// Initialize XPath  
$xpath = new DOMXpath($doc); 
// Register the itunes namespace 
$xpath->registerNamespace('itunes', 'http://www.itunes.com/dtds/podcast-1.0.dtd'); 

$items = $doc->getElementsByTagName('item');  
foreach($items as $item) { 
    $title = $xpath->query('title', $item)->item(0)->nodeValue; 
    $author = $xpath->query('itunes:author', $item)->item(0)->nodeValue; 
    $enclosure = $xpath->query('enclosure', $item)->item(0); 
    $url = $enclosure->attributes->getNamedItem('url')->value; 

    echo "$title - $author - $url\n"; 
} 

您可以從the demo看到,這將輸出:

What to do when a viper bites you - Ps. Phil Buechler - http://www.ccccarlingford.org.au/podcast/C3C-20120722PM.mp3 
+0

當我將它粘貼到我的文檔中時遇到了問題... – 2012-07-23 23:27:47

+0

@BenPotter - 「有問題」不是錯誤消息。出了什麼問題? – nickb 2012-07-23 23:46:57

+0

哈哈對不起 - 這是早上在這裏。我正確地將您的代碼複製並粘貼到我的網站上 - 但我需要設置$ xml變量。當它位於:http://c3carlingford.org.au/podcast/C3CiTunesFeed.xml時,我該如何做到這一點? 我試過這樣,但它沒有工作:$ xml = simplexml_load_file(「http://c3carlingford.org.au/podcast/C3CiTunesFeed.xml」); – 2012-07-24 00:00:51

1

是的,你可以做到這一點simplexml的。

下面是示例代碼:

<?php 

$x = simplexml_load_file("http://c3carlingford.org.au/podcast/C3CiTunesFeed.xml"); 

    foreach ($x->channel->item as $item) { 
    $otherNode = $item->children('http://www.itunes.com/dtds/podcast-1.0.dtd'); 
    echo $item->title .'---'.$otherNode->author; 
    echo "\n"; 
} 
?> 

輸出:

當毒蛇咬你---詩怎麼辦。菲爾Buechler

活水,讓河水流!--- Ps。菲爾Buechler

上帝的呼喚寬恕彼此AM & PM --- Ps。理查德·博塔

神的呼召來傳福音AM PM & ---羅布·沃

神的呼喚彼此相愛AM PM & ---羅布·沃

希望這有助於!

+0

這很好 - 但我也需要機箱選項卡中的url屬性。 – 2012-07-23 23:26:04