PHP动态创建XML文档

本文介绍了一个使用PHP从数据库中获取数据并生成RSS/XML文件的示例代码。该脚本首先建立数据库连接,然后选择数据库,并设置字符集为GB2312。接下来通过SQL查询获取数据,并使用DOMDocument类来构建RSS/XML结构。每个数据库记录被转换成一个XML项,包括标题、链接、描述等元素。
摘要由CSDN通过智能技术生成

一 代码

conn.php
<?php 
$id=mysql_connect("localhost","root","root") or die('数据库连接失败:' . mysql_error());
if(mysql_select_db("db_database26",$id))
  echo "";
  else
  echo ('数据库错误' . mysql_error());
mysql_query("set names gb2312");
?>
 
index.php
<a 
ref="rss.xml">查看rss.xml文件中的内容</a>
<?php 
include_once("conn/conn.php");
include_once("rss.php");
?>
 
rss.php
<?php 
$self=$_SERVER['HTTP_REFERER'];
$u=$_SERVER['HTTP_HOST'];
$url="http://"."$u";
$date_time=date("Y-m-d H:i:s");  
$dom = new DomDocument('1.0','gb2312');						//创建DOM对象
$object = $dom->createElement('rss');						//创建根节点rss
$dom->appendChild($object);									//将创建的根节点添加到dom对象中
	$type1 = $dom->createAttribute('xmlns:rdf');			//创建一个节点属性xmlns:rdf
	$object->appendChild($type1);							//将属性追加到rss根节点中
		$type1_value = $dom->createTextNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#'); //创建一个属性值
		$type1->appendChild($type1_value);								//将属性值赋给属性xmlns:rdf
	$type2 = $dom->createAttribute('xmlns:dc');							//创建一个节点属性xmlns:dc
	$object->appendChild($type2);							//将属性追加到rss根节点中
		$type2_value = $dom->createTextNode('http://purl.org/dc/elements/1.1/'); //创建一个属性值
		$type2->appendChild($type2_value);								//将属性值赋给属性xmlns:dc
	$type3 = $dom->createAttribute('xmlns:taxo');							//创建一个节点属性xmlns:taxo
	$object->appendChild($type3);							//将属性追加到rss根节点中
		$type3_value = $dom->createTextNode('http://purl.org/rss/1.0/modules/taxonomy/'); //创建一个属性值
		$type3->appendChild($type3_value);								//将属性值赋给属性xmlns:taxo
	$type4 = $dom->createAttribute('version');							//创建一个节点属性version
	$object->appendChild($type4);							//将属性追加到rss根节点中
		$type4_value = $dom->createTextNode('2.0'); 		//创建一个属性值
		$type4->appendChild($type4_value);					//将属性值赋给属性version
	$channel = $dom->createElement('channel');							//创建节点channel
	$object->appendChild($channel);									//将节点channel追加到根节点rss下
		$title = $dom->createElement('title');						//创建节点title
		$channel->appendChild($title);								//将节点追加到channel节点下
			$title_value = $dom->createTextNode(iconv('gb2312','utf-8','明日科技'));	//创建元素值
			$title->appendChild($title_value);						//将值赋给title节点
		$link = $dom->createElement('link');					//创建节点link
		$channel->appendChild($link);							//将节点追加到channel节点下
			$link_value = $dom->createTextNode(iconv('gb2312','utf-8','http://www.mingrisoft.com'));//创建元素值
			$link->appendChild($link_value);						//将值赋给link节点
		$description = $dom->createElement('description');					//创建节点description
		$channel->appendChild($description);						//将节点追加到channel节点下
			$description_value = $dom->createTextNode(iconv('gb2312','utf-8','明日科技'));	//创建元素值
			$description->appendChild($description_value);							//将值赋给description节点
		$dc_creator = $dom->createElement('dc:creator');					//创建节点dc:creator
		$channel->appendChild($dc_creator);						//将节点追加到channel节点中
			$dc_creator_value = $dom->createTextNode(iconv('gb2312','utf-8','http://www.mingrisoft.com'));//创建元素值
			$dc_creator->appendChild($dc_creator_value);						//将值赋给dc:creator节点
$sql=mysql_query("select * from tb_rss_database order by tb_rss_id desc");		//从数据库中读取数据
while($myrow=mysql_fetch_array($sql)){				//循环输出数据库中数据
		$item = $dom->createElement('item');			//创建节点item
		$object->appendChild($item);							//将item追加到channel节点下
			$item_title = $dom->createElement('title');					//创建title节点
			$item->appendChild($item_title);						//将节点追加到item节点下
			$item_link = $dom->createElement('link');					//创建link节点
			$item->appendChild($item_link);						//将节点追加到item节点下
			$item_description = $dom->createElement('description');		//创建description节点
			$item->appendChild($item_description);						//将节点追加到item节点中
			$item_pubDate = $dom->createElement('pubDate');				//创建节点pubDate
			$item->appendChild($item_pubDate);						//将节点追加到item节点下
				$title_value = $dom->createTextNode(iconv('gb2312','utf-8',"$myrow[tb_rss_subject]"));	//创建元素值
				$item_title->appendChild($title_value);						//将值赋给title节点
				$link_value = $dom->createTextNode(iconv('gb2312','utf-8',"$url/tm/sl/22/02/look_content.php?lmbs=$myrow[tb_rss_id]"));//创建元素值
				$item_link->appendChild($link_value);						//将值赋给link节点
				$description=substr($myrow[tb_rss_content],0,80);			//截取该字段中的前80个字符
				$description_value = $dom->createTextNode(iconv('gb2312','utf-8',"$description"));//创建元素值
				$item_description->appendChild($description_value);			//将值赋给description节点
				$pubDate_value = $dom->createTextNode(iconv('gb2312','utf-8',"$date_time"));//创建元素值
				$item_pubDate->appendChild($pubDate_value);						//将值赋给pubDate节点
}
$modi = $dom->saveXML();					//生成xml文档
file_put_contents('Rss.xml',$modi);			/*  将对象保存到Rss.xml文档中  */
?>
 
二 运行结果

 
  • 大小: 29.7 KB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值