jQueryTips by Tee++;

  • Home
  • Videos
  • jQueryTips's Fans

Coding like playing a piano.

Subscribe RSS

Search

Search

Sponsored

jQueryTips on Social

Followers

hide
Chainnnn Pang25441 Dexteri@n Ton KanexKane Supachai JustDoIt Rut petchy Tophit anndrew Webmaster

Categories

hide
  • Programing
  • Database
  • Framework
  • Mobile Development
    • Titanium Mobile
    • PhoneGap
  • Life

Tag Cloud

hide
PHP JavaScript MySQL XML Mobile jQuery CodeIgniter Hash php xml Debug Library Zend API Events Plugins Facebook Basic Registration Tool Twitter Search Swath Performance ffmpeg YouTube Web Service Yahoo! NoSQL MongoDB PhoneGap

Recent Posts

hide
  • ใครๆ ก็มี Utils เอางี้เราเพิ่ม Utils ให้กับ CodeIgniter กันบ้าง
  • แนะนำ JS.Class (A JavaScript class library)
  • PHP กับ OOP มาปูพื้นฐานกันเสียใหม่ก่อน
  • ประกาศข่าวสารจาก Admin
  • JSFIDDLE สุดยอด Tools สำหรับการ Debug การเขียนตัวอย่างโคด
  • Titanium Mobile + HTML + Native Scrolling
  • HTML to PDF ตัวไหนดี วันนี้ผมมีคำตอบ ...
  • ทำความรู้จักกับ JavaScript Pattern ในเชิงลึก
  • ผมบอกคุณแล้ว .... คนโง่ก็ Code ได้
  • วันนี้ มาออกแบบ Web Service ด้วย PHP กันเถอะ (CodeIgniter Version)

Recent Comments

hide
  • เยดดดด
  • มีตัวอย่าง CI แบบ เพียว ๆ ไหมครับ
  • ขอบคุณมากครับ เห็นแนวทางได้ชัดขึ้นจากตอนแรก ที่งงไปหมด ไม่รู้อะไรเป็นอะไร
  • ขอบคุณมากเลยครับท่าน....แหม่เพิ่มกำลังใจให้ผมได้เยอะเลย ตอนนี้กำลังฝึกงานอยู่ที่แห่งนึงในหาดใหญ่ พร้อมเด็กจากอีกสถาบันนึง 3 คน เราคิดว่าเรา…
  • Very good blog, I really like ~

Links

hide
  • OSCOOL
  • Architeture & Performance
  • Video and TV
  • Appcelerator
  • PhoneGap
  • Home
  •  » Blogs

เราจะให้บริการ Rss ยังไงดี?

May 28, 2009 12:53:02 AM | 0 Comments | in Programing | php, xml
ณ ขณะนี้ ยังคิดเรื่องที่จะเขียนเกี่ยวกับ jQuery ไม่ออก เอา PHP ไปอีกเรื่องละกัน แต่ขอเขียนแค่สั้นๆ ดีกว่า เหนื่อย!

RSS คิดว่าทุกคนรู้จักแน่นอน คือการให้บริการ Feed Data ซึ่งผู้ใช้งาน สามารถเอาไปอ่านได้ในหลายๆที่ อาทิ เช่น..

1. อ่านผ่าน Browser ที่ Support Rss
2. อ่านผ่านผู้ให้บริการต่างๆ เช่น friendfeed.com
3. อ่านโดยเขียน Javascript
4. อ่านโดยเขียน Server Side Script

แต่ที่จะมาแนะนำวันนี้คือการเขียน XML ใน Format Rss ซึ่งจริงๆ แล้วมันก็เป็น XML Format นึงเท่านั้น ซึ่ง ที่ Browser ส่วนใหญ่อ่านได้ จะเป็น มาตรฐาน Rss และ Atom

โดยการเขียน XML เราก็สามารถเขียนได้อีกหลายๆ วิธีเหมือนกัน
1. เขียนโดยใช้ tag โต้งๆ เลย (ข้ามไปๆ)
2. เขียนโดย interface ผ่าน class ต่างๆ เช่น PHP-XML
3. เขียนโดยใช้ Function ที่มีใน PHP อาทิเช่น
- SimpleXMLElement
- DOMDocument
- XMLWriter

และที่จะมา ทำตัวอย่างให้ดูวันนี้ก็คือ XMLWriter ด้วยสาเหตุ ที่ไม่ค่อยมีคนพูดถึง ตัวนี้นัก

<?php
header(‘Content-Type: text/xml; charset=utf-8′);
$xw = new XMLWriter();
$xw->openMemory();
//$xw->openUri(‘data.xml’);
$xw->startDocument(‘1.0′, ‘UTF-8′);
$xw->startElement(‘rss’);
$xw->writeAttribute(‘version’, ‘2.0′);
$xw->writeAttribute(‘xmlns:content’, ‘http://purl.org/rss/1.0/modules/content/’);
$xw->writeAttribute(‘xmlns:wfw’, ‘http://wellformedweb.org/CommentAPI/’);
$xw->writeAttribute(‘xmlns:dc’, ‘http://purl.org/dc/elements/1.1/’);
$xw->writeAttribute(‘xmlns:atom’, ‘http://www.w3.org/2005/Atom’);
$xw->writeAttribute(‘xmlns:sy’, ‘http://purl.org/rss/1.0/modules/syndication/’);
 
$xw->startElement(‘channel’);
$xw->writeElement(‘title’, ‘jQueryTips by Tee++;’);
$xw->startElement(‘atom:link’);
$xw->writeAttribute(‘href’, ‘http://www.jquerytips.com/feed/’);
$xw->writeAttribute(‘rel’, ’self’);
$xw->writeAttribute(‘type’, ‘application/rss+xml’);
$xw->endElement(); // end atom
$xw->writeElement(‘link’, ‘http://www.jquerytips.com’);
$xw->writeElement(‘description’, ‘Javascript is just bananas.’);
$xw->writeElement(‘pubDate’, ‘Mon, 06 Apr 2009 08:56:33 +0000′);
$xw->writeElement(‘generator’, ‘http://wordpress.org/?v=2.7.1′);
$xw->writeElement(‘language’, ‘en’);
$xw->writeElement(’sy:updatePeriod’, ‘hourly’);
$xw->writeElement(’sy:updateFrequency’, ‘1′);
 
/*—————— Start Loop ——————*/
        $xw->startElement(‘item’);
 
        $xw->writeElement(‘title’, ‘title go here’);
        $xw->writeElement(‘link’, ‘http://www.jquerytips.com/2009/04/06/jquery-akuma-hadouken/’);
        $xw->writeElement(‘comments’, ‘http://www.jquerytips.com/2009/04/06/jquery-akuma-hadouken/#comments’);
        $xw->writeelement(‘pubData’, ‘Mon, 06 Apr 2009 08:56:33 +0000′);
        $xw->writeElement(‘dc:Creator’, ‘Tee++;’);
        /*—————— Start Loop Categories ——————*/
                $xw->startElement(‘category’);
                $xw->writeCData(‘Name of category’);
                $xw->endElement(); // end category
        /*——————- End Loop Categories ——————-*/
        $xw->startElement(‘guid’);
        $xw->writeAttribute(‘isPermalink’, ‘false’);
        $xw->text(‘http://www.jquerytips.com/?p=369′);
        $xw->endElement(); // end guid
 
        $xw->startElement(‘description’);
        $xw->writeCData(‘<p>Long Description should be here.</p>’);
        $xw->endElement(); // end description
 
        $xw->startElement(‘content:encoded’);
        $xw->writeCData(‘<p>Long Description should be here.</p>’);
        $xw->endElement(); // end content:encoded
 
        $xw->writeElement(‘wfw:commentRss’, ‘http://www.jquerytips.com/2009/04/06/jquery-akuma-hadouken/feed/’);
 
        $xw->endElement(); // end item
/*——————- End Loop ——————-*/
 
$xw->endElement(); // end channel
$xw->endElement(); // end rss
 
 
$xml = $xw->outputMemory(true);
$xw->flush(true);
echo $xml;
?>

ซึ่งจากโคดด้านบนเป็น XML ใน Format Rss 2.0 ครับ โดยที่ผมไม่อยากจะไปนั่งอธิบาย ว่า โคดแต่ละชุดทำงานยังไง เพราะว่า PHP Manual มีบอกหมด (มีตัวอย่างด้วย)

ความสามารถของ XMLWriter สามารถกำหนดได้ ว่า จะ save xml ไว้ที่ file หรือว่า จะให้ render output ออกมา เลย

และส่วนตรงที่ผมเขียนว่า Start Loop – End Loop นั่น จริงๆ แล้วมันควรจะเป็น loop ของ Entries ที่เรามี มาวน

ถ้าโคดไม่มีอะไรผิดพลาดก็จะได้หน้าตาออกมาแบบนี้ครับ

*** จากภาพด้านบนผมใช้ IE6 Render ออกมาครับ เพราะว่า ถ้าใช้ IE7, Firefox, Safari, etc. มันจะ อ่านออกมาไม่เป็นโคด แต่ว่า อ่านออกเป็นภาษามนุษย์ แทนจะทำให้ไม่เห็นภาพกัน ยังไงลองเล่นกันดูนะครับ สำหรับ XMLWriter เจ๋งดี WriteCData ได้ด้วย อิอิ


twitter stumbleupon delicious digg facebook

0 comments

Add comment Load previous All comments

Leave a comment

Post Comment

Powered by OSCOOL. You may view this on RSS or ATOM.

OSCOOL

  • Twitter
  • Facebook
  • Next