11.2 生成XML
Generating XML
PHP可以生成(创建)动态HTML,也可以生成动态XML。你可以为其他程序生成基于表单、数据库查询的XML,也可以为PHP中可以做的任何事生成XML。动态XML的一个典型应用是RSS(丰富站点摘要,Rich Site Summary,另一种解释为真正简易聚合,Really Simple Syndication),一种用来同步新闻站点的文件格式。你可以读取数据库或者HTML文件中的文章信息,生成一个基于这些信息的XML摘要文件。
用PHP生成XML文档很简单。只需要用header()函数把文档的MIME类型改成"text/ xml"。为了避免<?xml ... ?>声明被解释为一个PHP标签,你也需要编辑php.ini,将short_open_tag选项设为不启用,或者直接用echo把这一行打印出来:
<?php
echo '<?xml version="1.0" encoding="ISO-8859-1" ?>';
?>
示例11-1用PHP生成一个RSS文档。RSS文件是一个包含有若干个channel元素的XML文档,每个channel包含有几个item元素,每个item元素又包含有一个title、一个description和一个link元素。实际上RSS所支持的属性比示例11-1中所展示的要多。就像PHP生成HTML没用到什么特殊函数一样,用PHP生成XML也只需要用echo打印内容即可。
示例11-1:生成一个XML文档
<?php header('Content-Type: text/xml'); ?>
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!DOCTYPE rss PUBLIC '-//Netscape Communications//DTD RSS 0.91//EN'
'http://my.netscape.com/publish/formats/rss-0.91.dtd'>
<rss version="0.91">
<channel>
<?php
// news items to produce RSS for
$items = array(
array('title' => 'Man Bites Dog',
'link' => 'http://www.example.com/dog.php',
'desc' => 'Ironic turnaround!'),
array('title' => 'Medical Breakthrough!',
'link' => 'http://www.example.com/doc.php',
'desc' => 'Doctors announced a cure for me.')
);
foreach($items as $item) {
echo "<item>\n";
echo " <title>{$item[title]}</title>\n";
echo " <link>{$item[link]}</link>\n";
echo " <description>{$item[desc]}</description>\n";
echo " <language>en-us</language>\n";
echo "</item>\n";
}
?>
</channel>
</rss>
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!DOCTYPE rss PUBLIC '-//Netscape Communications//DTD RSS 0.91//EN'
'http://my.netscape.com/publish/formats/rss-0.91.dtd'>
<rss version="0.91">
<channel>
<item>
<title>Man Bites Dog</title>
<link>http://www.example.com/dog.php</link>
<description>Ironic turnaround!</description>
<language>en-us</language>
</item>
<item>
<title>Medical Breakthrough!</title>
<link>http://www.example.com/doc.php</link>
<description>Doctors announced a cure for me.</description>
<language>en-us</language>
</item>
</channel>
</rss>







