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 相关文章推荐
PHP4和PHP5共存于一系统
Nov 17 PHP
php中计算时间差的几种方法
Dec 31 PHP
php适配器模式介绍
Aug 14 PHP
php准确计算复活节日期的方法
Apr 18 PHP
PHP中的类型约束介绍
May 11 PHP
php实现的任意进制互转类分享
Jul 07 PHP
php发送短信验证码完成注册功能
Nov 24 PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
Aug 19 PHP
php 微信开发获取用户信息如何实现
Dec 13 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
PDO::errorInfo讲解
Jan 28 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实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
php array_search() 函数使用
2010/04/13 PHP
php 模拟POST|GET操作实现代码
2010/07/20 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
php多线程并发实现方法
2016/09/30 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
jquery 问答知识整理
2010/02/11 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
Javascript之String对象详解
2016/06/08 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
js+html制作简单日历的方法
2017/06/27 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
Quasar Input:type=&quot;number&quot; 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
Python中的localtime()方法使用详解
2015/05/22 Python
python实现解数独程序代码
2017/04/12 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
python计算导数并绘图的实例
2020/02/29 Python
python实现超级马里奥
2020/03/18 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
设计模式的基本要素是什么
2014/04/21 面试题
学校拾金不昧表扬信
2015/01/16 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
德生BCL3000抢先使用感受和评价
2022/04/07 无线电