>백엔드 개발 >PHP 튜토리얼 >PHP에서 XML 데이터를 동적으로 삭제하는 단계에 대한 자세한 설명

PHP에서 XML 데이터를 동적으로 삭제하는 단계에 대한 자세한 설명

php中世界最好的语言
php中世界最好的语言원래의
2018-05-17 13:33:411315검색

이번에는 PHP에서 XML 데이터를 동적으로 삭제하는 단계에 대해 자세히 설명하겠습니다. PHP에서 XML 데이터를 동적으로 삭제할 때의 주의사항은 무엇인가요?

XML 데이터를 동적으로 추가하는 방법은 앞서 소개되었습니다. 여기서는 XML을 동적으로 삭제하는 기능을 구현하기 위해 원본 Message_XML 클래스를 기반으로 약간 개선했습니다.

1 Code

<?php
  class Message_XML extends DomDocument{//定义类Message_XML并继承DomDocument类
   private $Root;
   public function construct(){//构造函数
    parent:: construct();
    if(!file_exists("message.xml")){//判断文件是否存在
     $xmlstr="<?xml version=&#39;1.0&#39; encoding=&#39;GB2312&#39;?><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(&#39;添加成功&#39;);location.href=&#39;".$_SERVER[&#39;PHP_SELF&#39;]."&#39;</script>";
   }
   public function delete_message($admin_id){//定义删除函数
    $Root=$this->documentElement;//定义根节点
    $xpath=new DOMXPath($this);//定义DOMXPath
    $Node_Record=$xpath->query("//record[admin_id=&#39;$admin_id&#39;]");//执行查询语句
    $Root->removeChild($Node_Record->item(0));//删除节点
    $this->save("message.xml");//生成XML文档
    echo "<script>alert(&#39;删除成功&#39;);location.href=&#39;".$_SERVER[&#39;PHP_SELF&#39;]."&#39;</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=&#39;506&#39; bgcolor=&#39;#FFFFCC&#39;><tr>";
    print"<td width=&#39;106&#39; height=&#39;22&#39; align=&#39;center&#39;>";
    print"<b>用户名</b>";
    print"</td><td width=&#39;300&#39; align=&#39;center&#39;>";
    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=&#39;506&#39; bgcolor=&#39;#FFFFCC&#39;><tr>";
     print"<td width=&#39;106&#39; height=&#39;22&#39; align=&#39;center&#39;>";
     print"$field[1]";
     print"</td><td width=&#39;300&#39; align=&#39;center&#39;>";
     print"$field[2]";
     print"</td><td width=&#39;100&#39; align=&#39;center&#39;>";
     print"<a href=&#39;?Action=delete_message&admin_id=$field[0]&#39;>删除</a></td>";
     print"</tr></table>";
    }
   }
   public function post_message(){
    print"<table width=&#39;506&#39; bgcolor=&#39;#FFFFCC&#39;><form method=&#39;post&#39; action=&#39;?Action=add_message&#39;>";
    print"<tr><td width=&#39;106&#39; height=&#39;22&#39;>    用户名:</td><td><input type=&#39;text&#39; name=&#39;user&#39; size=50></td></tr>";
    print"<tr><td width=&#39;106&#39; height=&#39;22&#39;>    留言信息:</td><td width=&#39;400&#39;><textarea name=&#39;address&#39; cols=&#39;48&#39; rows=&#39;5&#39; id=&#39;address&#39;></textarea></td></tr>";
    print"<tr><td width=&#39;106&#39; height=&#39;30&#39;>  <input type=&#39;submit&#39; value=&#39;添加数据&#39;></td><td align=&#39;right&#39;><a href=&#39;?Action=show_message&#39;>查看数据</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>
     <?php
      $HawkXML=new Message_XML;//实例化Message_XML类
      $Action="";//初始化为空值
      if(isset($_GET[&#39;Action&#39;])) $Action=$_GET[&#39;Action&#39;];
      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[&#39;user&#39;],$_POST[&#39;address&#39;]);//当参数值为add_message时执行add_message()函数
       break;
       case "delete_message":
       $HawkXML->delete_message($_GET[&#39;admin_id&#39;]);//当参数值为delete_message时执行delete_message()函数
       break;
      }
     ?>
</table>
</body>
</html>

2. 실행 결과

이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 믿습니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:

PHP에서 함수 매개변수를 동적으로 가져오는 단계에 대한 자세한 설명

PHP에서 지연된 정적 바인딩 사용에 대한 자세한 설명

위 내용은 PHP에서 XML 데이터를 동적으로 삭제하는 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.