复制代码 代码如下:
include "mysql.php";
$mysql= mysql::getObject();
$mysql->query("SELECT * FROM post"); $xml = new XMLWriter();
$xml->openUri("hello.xml"); // or "php://output"
$xml->setIndentString(" ");
$xml->setIndent(true);
// start
$xml->startDocument("1.0", "UTF-8");
// <rss version="2.0">
$xml->startElement("rss");
$xml->writeAttribute("version","2.0");
// <channel>
$xml->startElement("channel");
// title
$xml->startElement("title");
$xml->text("title");
$xml->endElement();
// link
$xml->startElement("link");
$xml->text("http://jb51.net/post/");
$xml->endElement();
// description
$xml->startElement("description");
$xml->text("");
$xml->endElement();
// language
$xml->startElement("language");
$xml->text("zh-cn");
$xml->endElement();
// category
$xml->startElement("category");
$xml->text("IT");
$xml->endElement();
// copyright
$xml->startElement("copyright");
$xml->text("copyright 2011 jb51.net");
$xml->endElement();
// for item
while( $row = $mysql->fetch() )
{
$xml->startElement("item");
// title
$xml->startElement("title");
$xml->text( $row["title"]);
$xml->endElement();
// link
$xml->startElement("link");
$xml->text( "http://jb51.net/post/".$row["id"].".html");
$xml->endElement();
// description
$xml->startElement("description");
$xml->text( $row["text"] );
$xml->endElement();
// pubDate
$xml->startElement("pubDate");
$xml->text( date("D, d M Y H:i:s T", $row["time"]) );
$xml->endElement();
// category tag author need to write .over
$xml->endElement(); // item
}
$xml->endElement(); // channel
$xml->endElement(); // rss
$xml->endDocument();
// $xml->flush();

前面的mysql.php 是封装的mysql数据库功能,单例模式,所以取对象是静态方法 mysql::getObject();
代码很简单
openUri("") 方法的参数可以是一个文件,那么xml数据就写入到这个文件
或者 php://output 输出到缓冲区,然后 flush方法输出到页面