rdfの日付形式をjsで整形する //JavaScript

最近はAJAXを使って、XMLから情報を読み込むサイトが多いですね。確かに、いろいろな場所で使い回す用法は以前ならCMSにhtml自体を生成させていましたが、XMLなどで更新して、それをいろいろな頁に読み込ませて使えるのは便利です。なんたって、更新作業が楽です。iPhone版や、モバイル版、スマートフォン版まで用意するサイトでは、このような1ソースマルチユースは非常に助かります。
今回はJqueryを使って、XMLから情報を読み込んで使いました。
なかでも、日付エンコードが下のようなISO8601形式のものを以下に綺麗に入れるかを考えてみました。

[例]2010-01-06T12:25:30+0900(ISO8601形式)のような日付形式を、「2010.01.06」のように、綺麗に整形させて使う場合です。
今回は、rdfをjQueryでパースさせて、<dc:date>タグ内の日付を取得しました。

xml==========

〜〜〜省略〜〜〜
<item rdf:about="http://www.XXXXX">
    <title>タイトル</title>
    <link>http://www.XXX</link>
    <description>XXXXX</description>
    <content:encoded>            
        <![CDATA[><p>test</p>
        <p>test</p>
        <hr>
        <div align="center"><img src="???.jpg"></div>
        <p>test</p>            
        ]]>
    </content:encoded>
    <dc:date>2010-01-01:00:00+09:00</dc:date>
</item>
〜〜〜省略〜〜〜


Javascript==========

  $.ajax({
    //読み込むファイル
        url: 'xml/news.xml',
        async: true,
        cache: false,
        dataType: "xml",
        success: function(xml){
            $(xml).find('item').each(function(i){
        //読み込む記事数を5に設定
                if (i == 5) {
                    return false;
                }
                var title = $(this).find('title').text();
                var url = $(this).find('link').text();               
                var date;

                $(this).children().each(function() {
                    if ($(this)[0].tagName == "dc:date") {
                    date = $(this).text();
                    }
                });
                date = dateChanger(date);
 
                $('#slides').append('<a href="'+url+'><li>'+date+title+'<\/a><\/li>');
            });
            $('#slides ul').wrapAll('<ol><\/ol>');
        },
        //エラー表示
        error: function(xml){
            $('#slides').append('<p>読み込み失敗<\/p>');
        }
    });



Bookmark and Share


ブックマークに追加