PHP实现动态添加XML中数据的方法


Posted in PHP onMarch 30, 2018

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

前面简单讲述了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 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='400' 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='400' align='center'>";
     print"$field[2]";
     print"</td></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></table>
     <?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;
      }
     ?>
</body>
</html>

二. 运行结果

PHP实现动态添加XML中数据的方法

PHP 相关文章推荐
php木马攻击防御之道
Mar 24 PHP
如何用phpmyadmin设置mysql数据库用户的权限
Jan 09 PHP
php生成zip压缩文件的方法详解
Jun 09 PHP
php获取网页里所有图片并存入数组的方法
Apr 06 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
Jan 05 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
PHP中Array相关函数简介
Jul 03 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
May 29 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
Aug 19 PHP
PHP自动生成缩略图函数的源码示例
Mar 18 PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 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
PHP使用文件锁解决高并发问题示例
Mar 29 #PHP
You might like
开源SNS系统-ThinkSNS
2008/05/18 PHP
php读取msn上的用户信息类
2008/12/05 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
2017/03/29 PHP
js获取变量
2006/08/24 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
django配置app中的静态文件步骤
2020/03/27 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
Java的五个基础面试题
2016/02/26 面试题
2015年社区党务工作总结
2015/04/21 职场文书
升学宴家长致辞
2015/07/27 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python
redis中lua脚本使用教程
2021/11/01 Redis
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android