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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
php项目打包方法
Feb 18 PHP
简单的PHP图片上传程序
Mar 27 PHP
php快速url重写更新版[需php 5.30以上]
Apr 25 PHP
php网站来路获取代码(针对搜索引擎)
Jun 08 PHP
PHP字符串处理的10个简单方法
Jun 30 PHP
php的ajax框架xajax入门与试用介绍
Dec 19 PHP
基于php下载文件的详解
Jun 02 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
Jun 28 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
Mar 13 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
如何在Mac上通过docker配置PHP开发环境
May 29 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
缅甸的咖啡简史
2021/03/04 咖啡文化
解析ajax事件的调用顺序
2013/06/17 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
php实现微信支付之退款功能
2018/05/30 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
jQuery 插件 将this下的div轮番显示
2009/04/09 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
js获取视频时长代码
2014/04/10 Javascript
用jquery实现的一个超级简单的下拉菜单
2014/05/18 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
JavaScript实现弹出广告功能
2017/03/30 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
vue实现购物车小案例
2019/09/27 Javascript
js实现动态时钟
2020/03/12 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
python通过文件头判断文件类型
2015/10/30 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
详解numpy的argmax的具体使用
2019/05/27 Python
一文读懂Python 枚举
2020/08/25 Python
PyQt5结合matplotlib绘图的实现示例
2020/09/15 Python
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
静态变量和实例变量的区别
2015/07/07 面试题
医药营销个人求职信范文
2014/02/07 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
农业开发项目建议书
2014/05/16 职场文书
讲党性心得体会
2014/09/03 职场文书
大学教师个人总结
2015/02/10 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
护士岗位竞聘书
2015/09/15 职场文书
四年级作文之植物
2019/09/20 职场文书