PHP实现动态创建XML文档的方法


Posted in PHP onMarch 30, 2018

本文实例讲述了PHP实现动态创建XML文档的方法。分享给大家供大家参考,具体如下:

一. 代码

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文档中 */
?>

二. 运行结果

PHP实现动态创建XML文档的方法

PHP 相关文章推荐
ezSQL PHP数据库操作类库
May 16 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 PHP
php空间不支持socket但支持curl时recaptcha的用法
Nov 07 PHP
php提示undefined index的几种解决方法
May 21 PHP
浅析php与数据库代码开发规范
Aug 08 PHP
php二分查找二种实现示例
Mar 12 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 PHP
yii分页组件用法实例分析
Dec 28 PHP
php中序列化与反序列化详解
Feb 13 PHP
php生成图片缩略图功能示例
Feb 22 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
Oct 09 PHP
Laravel 类和接口注入相关的代码
Oct 15 PHP
php实现微信模板消息推送
Mar 30 #PHP
Mac系统下安装PHP Xdebug
Mar 30 #PHP
php实现websocket实时消息推送
Mar 30 #PHP
总结PHP内存释放以及垃圾回收
Mar 29 #PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 #PHP
PHP使用文件锁解决高并发问题示例
Mar 29 #PHP
PHP实现微信支付(jsapi支付)流程步骤详解
Mar 15 #PHP
You might like
php 方便水印和缩略图的图形类
2009/05/21 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
JavaScript多线程详解
2015/08/12 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
webpack构建react多页面应用详解
2017/09/15 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
React diff算法的实现示例
2018/04/20 Javascript
angular6.0开发教程之如何安装angular6.0框架
2018/06/29 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
python实现决策树分类
2018/08/30 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
Django视图类型总结
2021/02/17 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
C面试题
2015/10/08 面试题
运动会入场解说词
2014/02/07 职场文书
护理毕业生自我鉴定
2014/02/11 职场文书
大学生活自我评价
2014/04/09 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
民主评议党员个人总结
2015/02/13 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
观后感的写法
2015/06/19 职场文书
关于远足的感想
2015/08/10 职场文书