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.MVC的模板标签系统(三)
Sep 05 PHP
php escape URL编码
Dec 10 PHP
一个比较简单的PHP 分页分组类
Dec 10 PHP
php中批量替换文件名的实现代码
Jul 20 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
PHP中将ip地址转成十进制数的两种实用方法
Aug 15 PHP
php递归使用示例(php递归函数)
Feb 14 PHP
PHP代码优化技巧小结
Sep 29 PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
Dec 15 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
Sep 29 PHP
PHP中关于php.ini参数优化详解
Feb 28 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
基于header的一些常用指令详解
2013/06/06 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
php解析字符串里所有URL地址的方法
2015/04/03 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
PHP序列化和反序列化深度剖析实例讲解
2020/12/29 PHP
超简单的jquery的AJAX用法
2010/05/10 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
Python无损音乐搜索引擎实现代码
2018/02/02 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
Django和Flask框架优缺点对比
2019/10/24 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
美国糖果店:Sugarfina
2019/02/21 全球购物
英国No.1体育用品零售商:SportsDirect.com
2019/10/16 全球购物
Shell如何接收变量输入
2016/08/06 面试题
工程造价与管理专业应届生求职信
2013/11/23 职场文书
书法比赛获奖感言
2014/02/10 职场文书
经典洗发水广告词
2014/03/13 职场文书
捐书活动总结
2014/05/04 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
导游词之广西漓江
2019/11/02 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏