the PHP5 XMLWriter class allows to easily create XML well-formed documents.
The most useful methods:
- openURI($output) // use ‘php://output‘ as argument to stream directly
- startDocument(’1.0′) // add the initial tag. 1st argument : xml version
- writeElement(‘hr’) // write the empty node [hr/]
- writeAttribute(‘src’,'img.gif’) //write the attribute (inside the last node) and value
e.g: [img src="http://www.blogger.com/img.gif" /] - writeElement(‘b’,'content’) // write node with content “[b]content[/b]“
- startElement(‘body’) //add the start node [body]
- endElement() //close the last element started. e.g: [/body]
- How to create nodes with attributes and text:
startElement(‘textarea’)
writeAttribute(‘name’,'area1′)
text(‘default text’)
endElement()
output:
[textarea name="area"]default text[/textarea] - endDocument()
- flush()
- there are other methods to write comments, DTD, CData etc… view the official documentation.
Note: I used square brackets instead of “minor or greater than” because of blogspot editor limitation.
Complete Example: RSS Feed !!
@date_default_timezone_set(“GMT”);
$xml = new XMLWriter();
// Output directly to the user
$xml->openURI(‘php://output’);
$xml->startDocument(’1.0′);
$xml->setIndent(2);
//rss
$xml->startElement(‘rss’);
$xml->writeAttribute(‘version’, ’2.0′);
$xml->writeAttribute(‘xmlns:atom’, ‘http://www.w3.org/2005/Atom’); //channel
$xml->startElement(“channel”); //title, desc, link, date
$xml->writeElement(‘title’, ‘PHP news’);
$xml->writeElement(‘description’, ‘description….’);
$xml->writeElement(‘link’, ‘http://www.example.com/rss.hml’);
$xml->writeElement(‘pubDate’, date(“D, d M Y H:i:s e”)); //item !
$xml->startElement(“item”);
$xml->writeElement(‘title’, ‘news 1′);
$xml->writeElement(‘link’, ‘http://www.example.com/1.html’);
$xml->writeElement(‘description’, ‘descr 1′);
$xml->writeElement(‘pubDate’, date(“D, d M Y H:i:s e”));
//cat
$xml->startElement(‘category’);
$xml->writeAttribute(‘domain’, ‘http://www.example.com/cat1.htm’);
$xml->text(‘News’);
$xml->endElement();
//end item
$xml->endElement();
//end channel
$xml->endElement();
// end rss
$xml->endElement();
//end doc
$xml->endDocument();
//flush
$xml->flush();
$xml = new XMLWriter();
// Output directly to the user
$xml->openURI(‘php://output’);
$xml->startDocument(’1.0′);
$xml->setIndent(2);
//rss
$xml->startElement(‘rss’);
$xml->writeAttribute(‘version’, ’2.0′);
$xml->writeAttribute(‘xmlns:atom’, ‘http://www.w3.org/2005/Atom’); //channel
$xml->startElement(“channel”); //title, desc, link, date
$xml->writeElement(‘title’, ‘PHP news’);
$xml->writeElement(‘description’, ‘description….’);
$xml->writeElement(‘link’, ‘http://www.example.com/rss.hml’);
$xml->writeElement(‘pubDate’, date(“D, d M Y H:i:s e”)); //item !
$xml->startElement(“item”);
$xml->writeElement(‘title’, ‘news 1′);
$xml->writeElement(‘link’, ‘http://www.example.com/1.html’);
$xml->writeElement(‘description’, ‘descr 1′);
$xml->writeElement(‘pubDate’, date(“D, d M Y H:i:s e”));
//cat
$xml->startElement(‘category’);
$xml->writeAttribute(‘domain’, ‘http://www.example.com/cat1.htm’);
$xml->text(‘News’);
$xml->endElement();
//end item
$xml->endElement();
//end channel
$xml->endElement();
// end rss
$xml->endElement();
//end doc
$xml->endDocument();
//flush
$xml->flush();
output:


