PHP实现动态删除XML数据的方法示例


Posted in PHP onMarch 30, 2018

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

前面介绍了动态添加XML数据的方法,这里在原有Message_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 delete_message($admin_id){//定义删除函数
    $Root=$this->documentElement;//定义根节点
    $xpath=new DOMXPath($this);//定义DOMXPath
    $Node_Record=$xpath->query("//record[admin_id='$admin_id']");//执行查询语句
    $Root->removeChild($Node_Record->item(0));//删除节点
    $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='300' 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='300' align='center'>";
     print"$field[2]";
     print"</td><td width='100' align='center'>";
     print"<a href='?Action=delete_message&admin_id=$field[0]'>删除</a></td>";
     print"</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>
     <?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;
       case "delete_message":
       $HawkXML->delete_message($_GET['admin_id']);//当参数值为delete_message时执行delete_message()函数
       break;
      }
     ?>
</table>
</body>
</html>

二. 运行结果

PHP实现动态删除XML数据的方法示例

PHP 相关文章推荐
ezSQL PHP数据库操作类库
May 16 PHP
PHP XML操作的各种方法解析(比较详细)
Jun 17 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
国外十大最流行的PHP框架排名
Jul 04 PHP
php中current、next与reset函数用法实例
Nov 17 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Feb 10 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
PHP调用其他文件中的类
Apr 02 PHP
php+js实现裁剪任意形状图片
Oct 31 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 PHP
浅谈PHP之ThinkPHP框架使用详解
Jul 21 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 PHP
PHP实现动态添加XML中数据的方法
Mar 30 #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
You might like
用PHP实现登陆验证码(类似条行码状)
2006/10/09 PHP
php smarty 二级分类代码和模版循环例子
2011/06/01 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
python中使用mysql数据库详细介绍
2015/03/27 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
python Tkinter版学生管理系统
2019/02/20 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
python Kmeans算法原理深入解析
2019/08/23 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
完美主义个人的自我评价
2014/02/17 职场文书
开工仪式策划方案
2014/05/23 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
Python 多线程处理任务实例
2021/11/07 Python