PHP实现动态删除XML数据的方法示例
2018-09-07 13:41
本文实例讲述了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>
二. 运行结果
PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:
在线XML/JSON互相转换工具:
在线格式化XML/在线压缩XML:
XML在线压缩/格式化工具:
XML代码在线格式化美化工具:
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP针对XML文件操作技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
上一篇:php中常用编辑器推荐
下一篇:PHP+DBM的同学录程序(5)
文章标题:PHP实现动态删除XML数据的方法示例
文章链接:http://soscw.com/index.php/essay/12821.html