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 相关文章推荐
php 正则 过滤html 的超链接
Jun 02 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
php数组中删除元素之重新索引的方法
Sep 16 PHP
thinkphp的静态缓存用法分析
Nov 29 PHP
php支付宝手机网页支付类实例
Mar 04 PHP
php遍历删除整个目录及文件的方法
Mar 13 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 PHP
php blowfish加密解密算法
Jul 02 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
PHP缓存工具XCache安装与使用方法详解
Apr 09 PHP
PHP基本语法
Mar 31 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生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
jqPlot Option配置对象详解
2009/07/25 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
Python递归函数定义与用法示例
2017/06/02 Python
浅谈用VSCode写python的正确姿势
2017/12/16 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
毕业生精彩的自我评价分享
2013/10/06 职场文书
教育技术职业规划范文
2014/03/04 职场文书
园林技术专业求职信
2014/07/28 职场文书
维稳承诺书
2015/01/20 职场文书
面试通知短信
2015/04/20 职场文书
指导老师鉴定意见
2015/06/05 职场文书
2016年元旦寄语
2015/08/17 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
MySQL 数据丢失排查案例
2021/05/08 MySQL
如何理解及使用Python闭包
2021/06/01 Python