当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-06 09:58:22 浏览: 评论:0 

这篇文章主要介绍了PHP实现动态删除XML数据的方法,在前面介绍的Message_XML类基础上进行改进,增加了xml删除功能,具有一定参考借鉴价值,需要的朋友可以参考下

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

前面介绍了动态添加XML数据的方法,这里在原有Message_XML类的基础上稍作改进,实现动态删除xml的功能:

一. 代码

  1. <?php 
  2.   class Message_XML extends DomDocument{//定义类Message_XML并继承DomDocument类 
  3.    private $Root
  4.    public function __construct(){//构造函数 
  5.     parent:: __construct(); 
  6.     if(!file_exists("message.xml")){//判断文件是否存在 
  7.      $xmlstr="<?xml version='1.0' encoding='GB2312'?><message></message>"
  8.      $this->loadXML($xmlstr); 
  9.      $this->save("message.xml");//生成XML文档 
  10.     }else
  11.      $this->load("message.xml");//如果存在则载入XML文档 
  12.     } 
  13.    } 
  14.    public function add_message($user,$address){//创建方法 
  15.     $Root=$this->documentElement;//定义根节点 
  16.     $admin_id=date("Ynjhis"); 
  17.     $Node_admin_id=$this->createElement("admin_id");//创建节点admin_id 
  18.     $text=$this->createTextNode(iconv("GB2312","UTF-8",$admin_id));//创建一个文本节点 
  19.     $Node_admin_id->appendChild($text);//将文本节点添加到admin_id节点中 
  20.     $Node_user=$this->createElement("user");//创建节点user 
  21.     $text=$this->createTextNode(iconv("GB2312","UTF-8",$user));//创建一个文本节点 
  22.     $Node_user->appendChild($text);//将文本节点添加到user节点中 
  23.     $Node_address=$this->createElement("address");//创建节点address 
  24.     $text=$this->createTextNode(iconv("GB2312","UTF-8",$address));//创建一个文本节点 
  25.     $Node_address->appendChild($text);//将文本节点添加到address节点中 
  26.     $Node_Record=$this->createElement("record");//创建节点record 
  27.     $Node_Record->appendChild($Node_admin_id);//将admin_id节点添加到record节点中 
  28.     $Node_Record->appendChild($Node_user);//将user节点添加到record节点中 
  29.     $Node_Record->appendChild($Node_address);//将address节点添加到record节点中 
  30.     $Root->appendChild($Node_Record);//将record节点添加到根节点中 
  31.     $this->save("message.xml");//生成XML文档 
  32.     echo "<script>alert('添加成功');location.href='".$_SERVER['PHP_SELF']."'</script>"; 
  33.    } 
  34.    public function delete_message($admin_id){//定义删除函数 
  35.     $Root=$this->documentElement;//定义根节点 
  36.     $xpath=new DOMXPath($this);//定义DOMXPath 
  37.     $Node_Record=$xpath->query("//record[admin_id='$admin_id']");//执行查询语句 
  38.     $Root->removeChild($Node_Record->item(0));//删除节点 
  39.     $this->save("message.xml");//生成XML文档 
  40.     echo "<script>alert('删除成功');location.href='".$_SERVER['PHP_SELF']."'</script>"; 
  41.    } 
  42.    public function show_message(){//定义输出XML文件中的内容函数 
  43.     $Root=$this->documentElement;//定义根节点 
  44.     $xpath=new DOMXPath($this);//定义DOMXPath 
  45.     $Node_Record=$this->getElementsByTagName("record");//获取节点record的标签 
  46.     $Node_Record_length=$Node_Record->length;//获取标签的数量 
  47.     print"<table width='506' bgcolor='#FFFFCC'><tr>"
  48.     print"<td width='106' height='22' align='center'>"
  49.     print"<b>用户名</b>"
  50.     print"</td><td width='300' align='center'>"
  51.     print"<b>留言信息</b></td></tr>"
  52.     for($i=0;$i<$Node_Record->length;$i++){//应用for循环输出查询结果 
  53.      $k=0; 
  54.      foreach($Node_Record->item($i)->childNodes as $articles){  //通过foreach语句读取返回对象中的数据 
  55.       $field[$k]=iconv("UTF-8","GB2312",$articles->textContent);//实现编码格式的转换 
  56.       $k++; 
  57.      } 
  58.      print"<table width='506' bgcolor='#FFFFCC'><tr>"
  59.      print"<td width='106' height='22' align='center'>"
  60.      print"$field[1]"
  61.      print"</td><td width='300' align='center'>"
  62.      print"$field[2]"
  63.      print"</td><td width='100' align='center'>"
  64.      print"<a href='?Action=delete_message&admin_id=$field[0]'>删除</a></td>"
  65.      print"</tr></table>"
  66.     } 
  67.    } 
  68.    public function post_message(){ 
  69.     print"<table width='506' bgcolor='#FFFFCC'><form method='post' action='?Action=add_message'>"
  70.     print"<tr><td width='106' height='22'>&nbsp;&nbsp;&nbsp;&nbsp;用户名:</td><td><input type='text' name='user' size=50></td></tr>"
  71.     print"<tr><td width='106' height='22'>&nbsp;&nbsp;&nbsp;&nbsp;留言信息:</td><td width='400'><textarea name='address' cols='48' rows='5' id='address'></textarea></td></tr>"
  72.     print"<tr><td width='106' height='30'>&nbsp;&nbsp;<input type='submit' value='添加数据'></td><td align='right'><a href='?Action=show_message'>查看数据</a>&nbsp;&nbsp;&nbsp;&nbsp;</td></tr></form></table>"
  73.    } 
  74.   } 
  75. ?> 
  76. <html> 
  77. <head> 
  78. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  79. <title>删除XML数据</title> 
  80. <style type="text/css"
  81. <!-- 
  82. body,td,th { 
  83.   font-size: 12px; 
  84. --> 
  85. </style></head> 
  86. <body> 
  87. <table width="506" height="50" border="0" cellpadding="0" cellspacing="0" bgcolor="#33BE6B"
  88.  <tr> 
  89.   <td width="506" height="50" valign="bottom" background="title.gif"
  90.    <table width="506"
  91.     <tr> 
  92.      <td height="24" align="right" scope="col">&nbsp;&nbsp;<a href="?Action=post_message" rel="external nofollow" >添加数据</a>&nbsp;&nbsp;&nbsp;</td></tr></table></td></tr> 
  93.      <?php 
  94.       $HawkXML=new Message_XML;//实例化Message_XML类 
  95.       $Action="";//初始化为空值 
  96.       if(isset($_GET['Action'])) $Action=$_GET['Action']; 
  97.       switch($Action){ 
  98.        case "show_message"
  99.        $HawkXML->show_message();//当参数值为show_message时执行show_message()函数 
  100.        break
  101.        case "post_message"
  102.        $HawkXML->post_message();//当参数值为post_message时执行post_message()函数 
  103.        break
  104.        case "add_message"
  105.        $HawkXML->add_message($_POST['user'],$_POST['address']);//当参数值为add_message时执行add_message()函数 
  106.        break
  107.        case "delete_message"
  108.        $HawkXML->delete_message($_GET['admin_id']);//当参数值为delete_message时执行delete_message()函数 
  109.        break
  110.       } 
  111.      ?> 
  112. </table> 
  113. </body> 
  114. </html>

Tags: PHP删除XML

分享到: