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 相关文章推荐
解决php中Cannot send session cache limiter 的问题的方法
Apr 27 PHP
PHP parse_url 一个好用的函数
Oct 03 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
Jul 25 PHP
php使用正则表达式获取图片url的方法
Jan 16 PHP
php通过ksort()函数给关联数组按照键排序的方法
Mar 18 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
Dec 30 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
Dec 28 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 PHP
Laravel ORM 数据model操作教程
Oct 21 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 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 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
Element-UI Table组件上添加列拖拽效果实现方法
2018/04/14 Javascript
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
JavaScript实现答题评分功能页面
2020/06/24 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
python基础教程之lambda表达式使用方法
2014/02/12 Python
python使用smtplib模块通过gmail实现邮件发送的方法
2015/05/08 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
中学运动会广播稿
2014/01/19 职场文书
上课迟到检讨书
2014/02/19 职场文书
商铺租赁意向书
2014/04/01 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
谢师宴答谢词
2015/01/05 职场文书
中学生自我评价范文
2015/03/03 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
DIY胆机必读:各国电子管评价
2022/04/06 无线电
canvas 中如何实现物体的框选
2022/08/05 Javascript