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数字格式化
Dec 06 PHP
PHP在字符串中查找指定字符串并删除的代码
Oct 02 PHP
PHP数组排序函数合集 以及它们之间的联系分析
Jun 27 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
php中的动态调用实例分析
Jan 07 PHP
php使用wordwrap格式化文本段落的方法
Mar 17 PHP
PHP排序算法类实例
Jun 17 PHP
php把数组值转换成键的方法
Jul 13 PHP
PHP实现的oracle分页函数实例
Jan 25 PHP
PHP 闭包详解及实例代码
Sep 28 PHP
php技巧小结【推荐】
Jan 19 PHP
phpmyadmin在宝塔面板里进不去的解决方案
Jul 06 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
php的RSA加密解密算法原理与用法分析
2020/01/23 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
js 获取Listbox选择的值的代码
2010/04/15 Javascript
js截取函数(indexOf,join等)
2010/09/01 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
浅谈javascript中new操作符的原理
2016/06/07 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
详解Express笔记之动态渲染HTML(新手入坑)
2018/12/13 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
python函数返回多个值的示例方法
2013/12/04 Python
Python 专题四 文件基础知识
2017/03/20 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
Python中turtle作图示例
2017/11/15 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
详解python播放音频的三种方法
2019/09/23 Python
python selenium循环登陆网站的实现
2019/11/04 Python
python正则表达式实例代码
2020/03/03 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
python为什么要安装到c盘
2020/07/20 Python
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
《桃花心木》教学反思
2014/02/17 职场文书
供货协议书范本
2014/04/22 职场文书
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python