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面向对象编程快速入门
Oct 09 PHP
Ajax PHP分页演示
Jan 02 PHP
PHP+Mysql+jQuery实现动态展示信息
Oct 08 PHP
PHP图片验证码制作实现分享(全)
May 10 PHP
php include和require的区别深入解析
Jun 17 PHP
解析php入库和出库
Jun 25 PHP
浅析php变量修饰符static的使用
Jun 28 PHP
php strrpos()与strripos()函数
Aug 31 PHP
深入剖析PHP中printf()函数格式化使用
May 23 PHP
php+flash+jQuery多图片上传源码分享
Jul 27 PHP
利用PHP生成静态html页面的原理
Sep 30 PHP
php如何利用pecl安装mongodb扩展详解
Jan 09 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
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
PHP和C#可共用的可逆加密算法详解
2015/10/26 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
JavaScript网页定位详解
2014/01/13 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
2019/04/29 Javascript
浅谈javascript错误处理
2019/08/11 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
用Python制作检测Linux运行信息的工具的教程
2015/04/01 Python
Python输出9*9乘法表的方法
2015/05/25 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
opencv实现简单人脸识别
2021/02/19 Python
python入门之井字棋小游戏
2020/03/05 Python
Python greenlet和gevent使用代码示例解析
2020/04/01 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
解决方案设计综合面试题
2015/08/31 面试题
老师给学生的表扬信
2014/01/17 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
秋季校运会广播稿100字
2014/09/18 职场文书
幼师小班个人总结
2015/02/12 职场文书
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS