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生成自己的LOG文件
Oct 09 PHP
第三节--定义一个类
Nov 16 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
Apr 01 PHP
php基于mcrypt的加密解密实例
Oct 27 PHP
php生成随机颜色方法汇总
Dec 03 PHP
php实现encode64编码类实例
Mar 24 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
Smarty模板引擎缓存机制详解
May 23 PHP
php时间函数用法分析
May 28 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
Feb 15 PHP
php使用pecl方式安装扩展操作示例
Aug 12 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 透明水印生成代码
2012/08/27 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
jquery 手势密码插件
2017/03/17 Javascript
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
跟老齐学Python之网站的结构
2014/10/24 Python
Python实现的特征提取操作示例
2018/12/03 Python
Python爬虫文件下载图文教程
2018/12/23 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
Django单元测试工具test client使用详解
2019/08/02 Python
python构建指数平滑预测模型示例
2019/11/21 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
幼儿园托班开学寄语
2014/01/18 职场文书
同学聚会主持词
2014/03/18 职场文书