3

Google の Feed API を使用して、JSON 形式で返された DeviantArt が提供する RSS フィードからメディアを取得しようとしています。フィードは次のとおりです。

http://backend.deviantart.com/rss.xml?type=deviation&q=boost%3Apopular%20タルタル

Google は多くの例を提供していますが、メディア フィードを含むものはほとんどなく、すべてメディア グループを利用しています。しかし、私が読もうとしているこの特定のフィードを見ると、メディア グループが表示されません。各フィード エントリには、関連付けられた「メディア」アイテムが 1 つだけあります。

<item>
<title>Expectant Tarutaru</title>
<link>http://requiem-shade.deviantart.com/art/Expectant-Tarutaru-38312114</link>
<guid isPermaLink="true">http://requiem-shade.deviantart.com/art/Expectant-Tarutaru-38312114</guid>
<pubDate>Sat, 19 Aug 2006 17:20:08 PDT</pubDate>
<media:title type="plain">Expectant Tarutaru</media:title>
<media:keywords/>
<media:rating>nonadult</media:rating>
<media:category label="Games">fanart/traditional/drawings/games</media:category>
<media:credit role="author" scheme="urn:ebu">Requiem-Shade</media:credit>
<media:credit role="author" scheme="urn:ebu">http://a.deviantart.net/avatars/r/e/requiem-shade.jpg</media:credit>
<media:copyright url="http://requiem-shade.deviantart.com">Copyright 2006-2012 !Requiem-Shade</media:copyright>        
<media:description type="html"><![CDATA[ A pregnant Tarutaru White Mage.  Was a request from another board.  Yes, I took liberties with Square-Enix's original design.  Yes, Tarutaru look like that as adults, except the females are flat-chested.  Had to augment her form to reflect the development of her body as her children grow inside her. ]]></media:description>
<media:thumbnail url="http://th06.deviantart.net/fs11/150/i/2006/231/c/f/Expectant_Tarutaru_by_Requiem_Shade.jpg" height="150" width="140"/>            
<media:thumbnail url="http://th03.deviantart.net/fs11/300W/i/2006/231/c/f/Expectant_Tarutaru_by_Requiem_Shade.jpg" height="322" width="300"/>
<media:content url="http://fc06.deviantart.net/fs11/i/2006/231/c/f/Expectant_Tarutaru_by_Requiem_Shade.jpg" height="463" width="431" medium="image"/>        
<media:content url="http://www.deviantart.com/download/38312114/" medium="document"/>
<description><![CDATA[ A pregnant Tarutaru White Mage.  Was a request from another board.  Yes, I took liberties with Square-Enix's original design.  Yes, Tarutaru look like that as adults, except the females are flat-chested.  Had to augment her form to reflect the development of her body as her children grow inside her.<br /><div><img src="http://th03.deviantart.net/fs11/300W/i/2006/231/c/f/Expectant_Tarutaru_by_Requiem_Shade.jpg" alt="thumbnail" /></div> ]]></description>
</item>

現在、フィードを読み取るために使用しているコードは次のとおりです。media:title今のところ値を読み取ろうとしていますが、すべてのデータを読み取りたいと考えていmedia:ます。

/*
*  How to load a feed via the Feeds API.
*/

google.load("feeds", "1");

// Our callback function, for when a feed is loaded.
function feedLoaded(result) {
    if (!result.error) {
        // Grab the container we will put the results into
        var container = document.getElementById("content");
        container.innerHTML = '';

        // Loop through the feeds, putting the titles onto the page.
        // Check out the result object for a list of properties returned in each entry.
        // http://code.google.com/apis/ajaxfeeds/documentation/reference.html#JSON
        for (var i = 0; i < result.feed.entries.length; i++) {
            var entry = result.feed.entries[i];
            var div = document.createElement("div");
            div.appendChild(document.createTextNode(entry.mediaTitle));
            container.appendChild(div);
        }
    }
}

function OnLoad() {
    // Create a feed instance that will grab Digg's feed.
    var feed = new google.feeds.Feed("http://backend.deviantart.com/rss.xml?type=deviation&q=boost%3Apopular%20tarutaru");

    // Calling load sends the request off.  It requires a callback function.
    feed.load(feedLoaded);
}

google.setOnLoadCallback(OnLoad);​

ここで提供されている例から取得: http://code.google.com/apis/ajax/playground/#load_feed

問題は、これらの値に到達するための正しい構文が何であるかわからないということです。何時間も試してきたので、今のところあなたが私の唯一の希望です。

どんな助けでも大歓迎です。弟への誕生日プレゼントとして作っているもので、早くこの煩わしさを乗り越えて、プレゼントが届くようにしたいです。:)

前もって感謝します。

4

1 に答える 1

0

XML フィードを読み取るためのサンプルを探してください (URL が手元にありません)。それが私がこれを理解するためにしたことです: feed.load() を呼び出す前に、フォーマットを XML に設定しています: feed.setResultFormat(google.feeds.Feed.XML_FORMAT); 次に、コールバックで、フィード内のアイテムをループします (アイテムとして返されるので、同じことができるように見えます)。

function feedLoaded(result) {
  if (!result.error) {
  // Get all items returned.
  var items = result.xmlDocument.getElementsByTagName('item');

  // Loop through our items
  for (var i = 0; i < items.length; i++) {
    var item = items[i];

    // Get the data from the element.  firstChild is the text node containing
    // the title, and nodeValue returns the value of it.
    var title = item.getElementsByTagName('title')[0].firstChild.nodeValue;
    var link = item.getElementsByTagName('link')[0].firstChild.nodeValue;
}

フィードにもタイトルとリンクがあるため、これらはそのまま機能するはずです。同じ基本スキームに従って、残りのデータを取得します。

于 2012-11-15T16:23:32.157 に答える