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 相关文章推荐
使用Apache的rewrite技术
Jun 22 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 PHP
php 代码优化的42条建议 推荐
Sep 25 PHP
apache+php+mysql安装配置方法小结
Aug 01 PHP
使用NetBeans + Xdebug调试PHP程序的方法
Apr 12 PHP
PHP5函数小全(分享)
Jun 06 PHP
浅谈php和.net的区别
Sep 28 PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 PHP
详解PHP的Yii框架中扩展的安装与使用
Apr 01 PHP
thinkphp框架实现数据添加和显示功能
Jun 29 PHP
解决Laravel5.2 Auth认证退出失效的问题
Oct 14 PHP
PHP高并发和大流量解决方案整理
Mar 09 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/09/13 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
php数组和链表的区别总结
2019/09/20 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
用js生产批量批处理执行命令
2008/07/28 Javascript
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
jQuery技巧大放送 学习jquery的朋友可以看下
2009/10/14 Javascript
javascript操作cookie的文章(设置,删除cookies)
2010/04/01 Javascript
jQuery select操作控制方法小结
2010/05/26 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
Angular2 (RC4) 路由与导航详解
2016/09/21 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
利用python 读写csv文件
2020/09/10 Python
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
软件测试工程师面试问题精选
2016/10/28 面试题
小区门卫管理制度
2014/01/29 职场文书
《狐假虎威》教学反思
2014/02/07 职场文书
付款委托书范本
2014/04/04 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书