1

xml の内容は次のとおりです。

<?xml version="1.0"?>
<rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:atom="http://www.w3.org/2005/Atom">
   <channel>
      <title>Some Title.</title>
      <description>Pipes Output</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info</link>
      <atom:link rel="next" href="http://pipes.yahoo.com/pipes/pipe.run"/>
      <pubDate>Fri, 17 Aug 2012 07:25:28 +0000</pubDate>
      <generator>http://pipes.yahoo.com/pipes</generator>
      <item>
         <title>Title 1</title>
         <link>http://feedproxy.google.com</link>
         <description>there is no description for this</description>
         <guid isPermaLink="false">http://wordpress.com</guid>
         <pubDate>Thu, 16 Aug 2012 16:47:41 +0000</pubDate>
         <media:content medium="image" url="">
            <media:title type="html">some media</media:title>
         </media:content>
         <media:content medium="image" url="">
            <media:title type="html">Image</media:title>
         </media:content>
         <media:content medium="image" url="">
            <media:title type="html">Image</media:title>
         </media:content>
         <media:content medium="image" url="">
            <media:title type="html">Image</media:title>
         </media:content>
         <category>News</category>
      </item>        
      <item>
         <title>title 3</title>
         <link>http://google.com</link>
         <description>some description</description>
         <author>Self</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Wed, 15 Aug 2012 17:43:32 +0000</pubDate>
         <enclosure type=""/>
      </item>

   </channel>
</rss>

観察されたように、一部のアイテムには<media:content>要素があり、一部のアイテムには要素がありません

xml を解析する Jquery は次のとおりです。

function loadNews()
{
    var entries = [];
    var selectedEntry = "";
    $loadMore = $('#btn_loadmore');
    $loadMore.hide();
    var RSS = "news.xml";                       
//$.get(RSS, {}, function(res, code) {
    $.ajax(
    {
        type: "POST",
        url: "news.xml",                               
        dataType: "xml",
        async: false,
        success: function(res){
        var xml = $(res);
        var items = xml.find("item");
        $.each(items, function(i, v) {
        entry = {
           title:$(v).find("\\:title, title").text(),
           link:$(v).find("link").text().replace(/\/+$/, ""),
           description:$.trim($(v).find("description").text())
    };
     entries.push(entry);
    });

    var s = '';
    for(i=0;i<10;i++)
    {
        console.log(i + "--------------------------");
        if(i>=entries.length)
        break;
        alert(entries[i].title);
        console.log(entries[i].description);
        console.log(entries[i].link);
    }
    }
    });                                                
} 

問題:

Firefox では、上記のコードは正常に動作します。ただし、サファリでは、メディアタグ内のテキストもタイトルに追加されます

Firefox での出力:Title 1

サファリでの出力:Title 1some mediaImageImageImage

編集:セレクターに選択しないように指示するにはどうすればよい<media:title>ですか?<title>

この投稿を確認しましたが、何も役に立ちませんでした。

私は何が欠けていますか?

* jquery 1.7.1を使用しています。問題は **jquery 1.6.**** と同じです。

4

1 に答える 1

0

find('[nodeName="title"]').text()の代わりに使用find("\\:title, title").text()

しかし、これはjquery 1.6で動作します.jquery 1.7.1でも同じことを達成したいです

于 2012-08-17T11:52:19.830 に答える