#native_company# #native_desc#
#native_cta#

A Quick PHP XMLWriter Class Tutorial: XML & RSS

By PHP Builder Staff
on January 16, 2009

Since there is absolutely no documentation on how to use PHP5’s XMLWriter class, here is a very simple example of how to use the class to create an RSS feed.

PHP Code:
<?php 

// THIS IS ABSOLUTELY ESSENTIAL - DO NOT FORGET TO SET THIS 
@date_default_timezone_set("GMT"); 

$writer = new XMLWriter(); 
// Output directly to the user 

$writer->openURI('php://output'); 
$writer->startDocument('1.0'); 

$writer->setIndent(4); 

// declare it as an rss document 
$writer->startElement('rss'); 
$writer->writeAttribute('version', '2.0'); 
$writer->writeAttribute('xmlns:atom', 'http://www.w3.org/2005/Atom'); 


$writer->startElement("channel"); 
//---------------------------------------------------- 
//$writer->writeElement('ttl', '0'); 
$writer->writeElement('title', 'Latest Products'); 
$writer->writeElement('description', 'This is the latest products from our website.'); 
$writer->writeElement('link', 'http://www.domain.com/link.htm'); 
$writer->writeElement('pubDate', date("D, d M Y H:i:s e")); 
 $writer->startElement('image'); 
 $writer->writeElement('title', 'Latest Products'); 
 $writer->writeElement('link', 'http://www.domain.com/link.htm'); 
 $writer->writeElement('url', 'http://www.iab.net/media/image/120x60.gif'); 
 $writer->writeElement('width', '120'); 
 $writer->writeElement('height', '60'); 
 $writer->endElement(); 
//---------------------------------------------------- 



//---------------------------------------------------- 
$writer->startElement("item"); 
$writer->writeElement('title', 'New Product 8'); 
$writer->writeElement('link', 'http://www.domain.com/link.htm'); 
$writer->writeElement('description', 'Description 8 Yeah!'); 
$writer->writeElement('guid', 'http://www.domain.com/link.htm?tiem=1234'); 

$writer->writeElement('pubDate', date("D, d M Y H:i:s e")); 

$writer->startElement('category'); 
 $writer->writeAttribute('domain', 'http://www.domain.com/link.htm'); 
 $writer->text('May 2008'); 
$writer->endElement(); // Category 

// End Item 
$writer->endElement(); 
//---------------------------------------------------- 


// End channel 
$writer->endElement(); 

// End rss 
$writer->endElement(); 

$writer->endDocument(); 

$writer->flush(); 
?> 

The above will give you this:

Code:
<?xml version="1.0"?> 
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 
<channel> 
 <title>Latest Products</title> 
 <description>This is the latest products from our website.</description> 
 <link>http://www.domain.com/link.htm</link> 
 <pubDate>Thu, 10 Jul 2008 11:47:14 GMT</pubDate> 
 <image> 
 <title>Latest Products</title> 
 <link>http://www.domain.com/link.htm</link> 
 <url>http://www.iab.net/media/image/120x60.gif</url> 
 <width>120</width> 
 <height>60</height> 
 </image> 
 <item> 
 <title>New Product 8</title> 
 <link>http://www.domain.com/link.htm</link> 
 <description>Description 8 Yeah!</description> 
 <guid>http://www.domain.com/link.htm?tiem=1234</guid> 
 <pubDate>Thu, 10 Jul 2008 11:47:14 GMT</pubDate> 
 <category domain="http://www.domain.com/link.htm">May 2008</category> 
 </item> 
</channel> 
</rss>

Just a note from an RSS validator–this line should be before the ‘channel’ tag for some reason!

Code:
<atom:link href="http://dallas.example.com/rss.xml" rel="self" type="application/rss+xml" />

and here’s how to use it as a pre made class…