PHP实现动态添加XML中数据的方法


Posted in PHP onMarch 30, 2018

本文实例讲述了PHP实现动态添加XML中数据的方法。分享给大家供大家参考,具体如下:

前面简单讲述了xml文档的创建,这里继续讨论xml中数据的动态添加:

一. 代码

<?php
  class Message_XML extends DomDocument{//定义类Message_XML并继承DomDocument类
   private $Root;
   public function __construct(){//构造函数
    parent:: __construct();
    if(!file_exists("message.xml")){//判断文件是否存在
     $xmlstr="<?xml version='1.0' encoding='GB2312'?><message></message>";
     $this->loadXML($xmlstr);
     $this->save("message.xml");//生成XML文档
    }else{
     $this->load("message.xml");//如果存在则载入XML文档
    }
   }
   public function add_message($user,$address){//创建方法
    $Root=$this->documentElement;//定义根节点
    $admin_id=date("Ynjhis");
    $Node_admin_id=$this->createElement("admin_id");//创建节点admin_id
    $text=$this->createTextNode(iconv("GB2312","UTF-8",$admin_id));//创建一个文本节点
    $Node_admin_id->appendChild($text);//将文本节点添加到admin_id节点中
    $Node_user=$this->createElement("user");//创建节点user
    $text=$this->createTextNode(iconv("GB2312","UTF-8",$user));//创建一个文本节点
    $Node_user->appendChild($text);//将文本节点添加到user节点中
    $Node_address=$this->createElement("address");//创建节点address
    $text=$this->createTextNode(iconv("GB2312","UTF-8",$address));//创建一个文本节点
    $Node_address->appendChild($text);//将文本节点添加到address节点中
    $Node_Record=$this->createElement("record");//创建节点record
    $Node_Record->appendChild($Node_admin_id);//将admin_id节点添加到record节点中
    $Node_Record->appendChild($Node_user);//将user节点添加到record节点中
    $Node_Record->appendChild($Node_address);//将address节点添加到record节点中
    $Root->appendChild($Node_Record);//将record节点添加到根节点中
    $this->save("message.xml");//生成XML文档
    echo "<script>alert('添加成功');location.href='".$_SERVER['PHP_SELF']."'</script>";
   }
   public function show_message(){//定义输出XML文件中的内容函数
    $Root=$this->documentElement;//定义根节点
    $xpath=new DOMXPath($this);//定义DOMXPath
    $Node_Record=$this->getElementsByTagName("record");//获取节点record的标签
    $Node_Record_length=$Node_Record->length;//获取标签的数量
    print"<table width='506' bgcolor='#FFFFCC'><tr>";
    print"<td width='106' height='22' align='center'>";
    print"<b>用户名</b>";
    print"</td><td width='400' align='center'>";
    print"<b>留言信息</b></td></tr>";
    for($i=0;$i<$Node_Record->length;$i++){//应用for循环输出查询结果
     $k=0;
     foreach($Node_Record->item($i)->childNodes as $articles){  //通过foreach语句读取返回对象中的数据
      $field[$k]=iconv("UTF-8","GB2312",$articles->textContent);//实现编码格式的转换
      $k++;
     }
     print"<table width='506' bgcolor='#FFFFCC'><tr>";
     print"<td width='106' height='22' align='center'>";
     print"$field[1]";
     print"</td><td width='400' align='center'>";
     print"$field[2]";
     print"</td></tr></table>";
    }
   }
   public function post_message(){//定义输出表单的函数
    print"<table width='506' bgcolor='#FFFFCC'><form method='post' action='?Action=add_message'>";
    print"<tr><td width='106' height='22'>    用户名:</td><td><input type='text' name='user' size=50></td></tr>";
    print"<tr><td width='106' height='22'>    留言信息:</td><td width='400'><textarea name='address' cols='48' rows='5' id='address'></textarea></td></tr>";
    print"<tr><td width='106' height='30'>  <input type='submit' value='添加数据'></td><td align='right'><a href='?Action=show_message'>查看数据</a>    </td></tr></form></table>";
   }
  }
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>添加XML数据</title>
<style type="text/css">
<!--
body,td,th {
  font-size: 12px;
}
-->
</style></head>
<body>
<table width="506" height="50" border="0" cellpadding="0" cellspacing="0" bgcolor="#33BE6B">
 <tr>
  <td width="506" height="50" valign="bottom" background="title.gif">
   <table width="506">
    <tr>
     <td height="24" align="right" scope="col">  <a href="?Action=post_message" rel="external nofollow" >添加数据</a>   </td></tr></table></td></tr></table>
     <?php
      $HawkXML=new Message_XML;//实例化Message_XML类
      $Action="";//初始化为空值
      if(isset($_GET['Action'])) $Action=$_GET['Action'];
      switch($Action){
       case "show_message":
       $HawkXML->show_message();//当参数值为show_message时执行show_message()函数
       break;
       case "post_message":
       $HawkXML->post_message();//当参数值为post_message时执行post_message()函数
       break;
       case "add_message":
       $HawkXML->add_message($_POST['user'],$_POST['address']);//当参数值为add_message时执行add_message()函数
       break;
      }
     ?>
</body>
</html>

二. 运行结果

PHP实现动态添加XML中数据的方法

PHP 相关文章推荐
php 数组的创建、调用和更新实现代码
Mar 09 PHP
深入解析PHP的引用计数机制
Jun 14 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
yii2中添加验证码的实现方法
Jan 09 PHP
修改Laravel5.3中的路由文件与路径
Aug 10 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
Mar 23 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
基于swoole实现多人聊天室
Jun 14 PHP
PHP实现动态创建XML文档的方法
Mar 30 #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
You might like
php利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
python 计算一个字符串中所有数字的和实例
2019/06/11 Python
python实现单链表的方法示例
2019/09/03 Python
将pycharm配置为matlab或者spyder的用法说明
2020/06/08 Python
python绘图模块之利用turtle画图
2021/02/12 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
单位实习证明怎么写
2014/01/17 职场文书
公司年会搞笑主持词
2014/03/24 职场文书
商铺租赁意向书
2014/04/01 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
爱国演讲稿500字
2014/05/04 职场文书
出国留学担保书
2014/05/20 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
项目合作意向书
2015/05/08 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
董事会决议范本
2015/07/01 职场文书