当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-06 09:57:07 浏览: 评论:0 

这篇文章主要介绍了PHP实现动态添加XML中数据的方法,结合实例形式分析了php操作xml格式数据类的定义及简单使用技巧,需要的朋友可以参考下。

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

前面简单讲述了xml文档的创建,这里继续讨论xml中数据的动态添加:

一. 代码

  1. <?php 
  2.   class Message_XML extends DomDocument{//定义类Message_XML并继承DomDocument类 
  3.    private $Root
  4.    public function __construct(){//构造函数 
  5.     parent:: __construct(); 
  6.     if(!file_exists("message.xml")){//判断文件是否存在 
  7.      $xmlstr="<?xml version='1.0' encoding='GB2312'?><message></message>"
  8.      $this->loadXML($xmlstr); 
  9.      $this->save("message.xml");//生成XML文档 
  10.     }else
  11.      $this->load("message.xml");//如果存在则载入XML文档 
  12.     } 
  13.    } 
  14.    public function add_message($user,$address){//创建方法 
  15.     $Root=$this->documentElement;//定义根节点 
  16.     $admin_id=date("Ynjhis"); 
  17.     $Node_admin_id=$this->createElement("admin_id");//创建节点admin_id 
  18.     $text=$this->createTextNode(iconv("GB2312","UTF-8",$admin_id));//创建一个文本节点 
  19.     $Node_admin_id->appendChild($text);//将文本节点添加到admin_id节点中 
  20.     $Node_user=$this->createElement("user");//创建节点user 
  21.     $text=$this->createTextNode(iconv("GB2312","UTF-8",$user));//创建一个文本节点 
  22.     $Node_user->appendChild($text);//将文本节点添加到user节点中 
  23.     $Node_address=$this->createElement("address");//创建节点address 
  24.     $text=$this->createTextNode(iconv("GB2312","UTF-8",$address));//创建一个文本节点 
  25.     $Node_address->appendChild($text);//将文本节点添加到address节点中 
  26.     $Node_Record=$this->createElement("record");//创建节点record 
  27.     $Node_Record->appendChild($Node_admin_id);//将admin_id节点添加到record节点中 
  28.     $Node_Record->appendChild($Node_user);//将user节点添加到record节点中 
  29.     $Node_Record->appendChild($Node_address);//将address节点添加到record节点中 
  30.     $Root->appendChild($Node_Record);//将record节点添加到根节点中 
  31.     $this->save("message.xml");//生成XML文档 
  32.     echo "<script>alert('添加成功');location.href='".$_SERVER['PHP_SELF']."'</script>"; 
  33.    } 
  34.    public function show_message(){//定义输出XML文件中的内容函数 
  35.     $Root=$this->documentElement;//定义根节点 
  36.     $xpath=new DOMXPath($this);//定义DOMXPath 
  37.     $Node_Record=$this->getElementsByTagName("record");//获取节点record的标签 
  38.     $Node_Record_length=$Node_Record->length;//获取标签的数量 
  39.     print"<table width='506' bgcolor='#FFFFCC'><tr>"
  40.     print"<td width='106' height='22' align='center'>"
  41.     print"<b>用户名</b>"
  42.     print"</td><td width='400' align='center'>"
  43.     print"<b>留言信息</b></td></tr>"
  44.     for($i=0;$i<$Node_Record->length;$i++){//应用for循环输出查询结果 
  45.      $k=0; 
  46.      foreach($Node_Record->item($i)->childNodes as $articles){  //通过foreach语句读取返回对象中的数据 
  47.       $field[$k]=iconv("UTF-8","GB2312",$articles->textContent);//实现编码格式的转换 
  48.       $k++; 
  49.      } 
  50.      print"<table width='506' bgcolor='#FFFFCC'><tr>"
  51.      print"<td width='106' height='22' align='center'>"
  52.      print"$field[1]"
  53.      print"</td><td width='400' align='center'>"
  54.      print"$field[2]"
  55.      print"</td></tr></table>"
  56.     } 
  57.    } 
  58.    public function post_message(){//定义输出表单的函数 
  59.     print"<table width='506' bgcolor='#FFFFCC'><form method='post' action='?Action=add_message'>"
  60.     print"<tr><td width='106' height='22'>&nbsp;&nbsp;&nbsp;&nbsp;用户名:</td><td><input type='text' name='user' size=50></td></tr>"
  61.     print"<tr><td width='106' height='22'>&nbsp;&nbsp;&nbsp;&nbsp;留言信息:</td><td width='400'><textarea name='address' cols='48' rows='5' id='address'></textarea></td></tr>"
  62.     print"<tr><td width='106' height='30'>&nbsp;&nbsp;<input type='submit' value='添加数据'></td><td align='right'><a href='?Action=show_message'>查看数据</a>&nbsp;&nbsp;&nbsp;&nbsp;</td></tr></form></table>"
  63.    } 
  64.   } 
  65. ?> 
  66. <html> 
  67. <head> 
  68. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  69. <title>添加XML数据</title> 
  70. <style type="text/css"
  71. <!-- 
  72. body,td,th { 
  73.   font-size: 12px; 
  74. --> 
  75. </style></head> 
  76. <body> 
  77. <table width="506" height="50" border="0" cellpadding="0" cellspacing="0" bgcolor="#33BE6B"
  78.  <tr> 
  79.   <td width="506" height="50" valign="bottom" background="title.gif"
  80.    <table width="506"
  81.     <tr> 
  82.      <td height="24" align="right" scope="col">&nbsp;&nbsp;<a href="?Action=post_message" rel="external nofollow" >添加数据</a>&nbsp;&nbsp;&nbsp;</td></tr></table></td></tr></table> 
  83.      <?php 
  84.       $HawkXML=new Message_XML;//实例化Message_XML类 
  85.       $Action="";//初始化为空值 
  86.       if(isset($_GET['Action'])) $Action=$_GET['Action']; 
  87.       switch($Action){ 
  88.        case "show_message"
  89.        $HawkXML->show_message();//当参数值为show_message时执行show_message()函数 
  90.        break
  91.        case "post_message"
  92.        $HawkXML->post_message();//当参数值为post_message时执行post_message()函数 
  93.        break
  94.        case "add_message"
  95.        $HawkXML->add_message($_POST['user'],$_POST['address']);//当参数值为add_message时执行add_message()函数 
  96.        break
  97.       } 
  98.      ?> 
  99. </body> 
  100. </html>

Tags: PHP添加XML

分享到: