PHP 操作xml编程---词库练习:对xml的crud操作
1、wordView.php
<html> <head> <meta http-equiv="Content-type" content="text/html;charset=utf-8"> </head> <body> <form action="wordProcess.php" method="post"> <input type="text" name="enword"> <input type="hidden" name="type" value="query"> <input type="submit" value="查询"> </form> <span>添加单词</span> <form action="wordProcess.php" method="post"> 英文:<input type="text" name="enword"><br> 中文:<input type="text" name="zhword"><br> <!--<input type="hidden" name="type" value="insert"> <input type="hidden" name="type" value="update"> --> <input type="submit" name="type" value="添加"> <input type="submit" name="type" value="修改"> </form> <form action="wordProcess.php" method="post"> <input type="text" name="word"> <input type="hidden" name="type" value="delete"> <input type="submit" value="删除"> </form> </body> </html>
2、wordProcess.php
<?php //接收类型 看看用户做什么(查询、添加....) $type=$_REQUEST['type']; //echo $type; //exit(); //创建xml文档对象 $doc=new DOMDocument(); $doc->load("words.xml"); //进行判断 if($type=="query"){ //获取用户输入的值 $enword=$_REQUEST['enword']; //判断是否进入查询 $isEnter=false; //获取所有单词节点 $words=$doc->getElementsByTagName("word"); //遍历单词节点 for($i=0;$i<$words->length;$i++){ $word_node=$words->item($i); //获取不同的语种 $en_word=getNodeVal($word_node,"en"); $zh_word=getNodeVal($word_node,"zh"); //查询 if($enword==$en_word){ $isEnter=true; echo $enword."的中文意思是:".getNodeVal($word_node,"zh"); echo "<br/><a href='wordView.php'>返回继续查询</a>"; }else if($enword==$zh_word){ $isEnter=true; echo $enword."的英文意思是:".getNodeVal($word_node,"en"); echo "<br/><a href='wordView.php'>返回继续查询</a>"; } } if(!$isEnter){ echo "无法查询"; echo "<br/><a href='wordView.php'>返回继续查询</a>"; } }else if($type=="添加"){ //接收 $enword=$_REQUEST['enword']; $zhword=$_REQUEST['zhword']; if(!empty($enword)&&!empty($zhword)){ //获取根节点 $root=$doc->getElementsByTagName("words")->item(0); $word=$doc->createElement("word"); $en=$doc->createElement("en",$enword); $zh=$doc->createElement("zh",$zhword); //进行挂载 $root->appendChild($word); $word->appendChild($en); $word->appendChild($zh); //保存xml文件 $doc->save("words.xml"); echo "添加成功<br/><a href='wordView.php'>返回继续操作</a>"; }else{ echo "请输入单词"; echo "<br/><a href='wordView.php'>返回继续操作</a>"; exit(); } }else if($type=="delete"){ $word=$_REQUEST['word']; //获取所有单词节点 $words=$doc->getElementsByTagName("word"); $isEnter=false; //遍历单词节点 for($i=0;$i<$words->length;$i++){ $word_node=$words->item($i); //获取不同的语种 $en_word=getNodeVal($word_node,"en"); $zh_word=getNodeVal($word_node,"zh"); //查询 if($word==$en_word || $word==$zh_word){ $isEnter=true; //找到父节点 $word_node->parentNode->removeChild($word_node); $doc->save("words.xml"); echo "删除成功<br/><a href='wordView.php'>返回继续操作</a>"; } } if(!$isEnter){ echo "操作失败"; echo "<br/><a href='wordView.php'>返回继续操作</a>"; } }else if($type="修改"){ //接收 $enword=$_REQUEST['enword']; $zhword=$_REQUEST['zhword']; if(!empty($enword)&&!empty($zhword)){ //获取所有单词节点 $words=$doc->getElementsByTagName("word"); //遍历单词节点 $isEnter=false; for($i=0;$i<$words->length;$i++){ $word_node=$words->item($i); //获取不同的语种 $en_word=getNodeVal($word_node,"en"); $zh_word=getNodeVal($word_node,"zh"); //查询 if($enword==$en_word && $zhword!=$zh_word){ //修改中文 $isEnter=true; //获取zh节点 $zh=$word_node->getElementsByTagName("zh")->item(0); $zh->nodeValue=$zhword; $doc->save("words.xml"); echo "修改成功"; echo "<br/><a href='wordView.php'>返回继续操作</a>"; }else if($enword!=$en_word && $zhword==$zh_word){ //修改因为 $isEnter=true; $en=$word_node->getElementsByTagName("en")->item(0); $en->nodeValue=$enword; $doc->save("words.xml"); echo "修改成功"; echo "<br/><a href='wordView.php'>返回继续操作</a>"; } } if(!$isEnter){ echo "没有做任何修改"; echo "<br/><a href='wordView.php'>返回继续操作</a>"; } }else{ echo "请输入需要修改的单词"; echo "<br/><a href='wordView.php'>返回继续操作</a>"; exit(); } } //获取节点的文本值 function getNodeVal(&$MyNode,$tagName){ return $MyNode->getElementsByTagName($tagName)->item(0)->nodeValue; } ?>
3、words.xml
<?xml version="1.0" encoding="utf-8"?> <words><word><en>boy</en><zh>男孩</zh></word><word><en>girl</en><zh>女孩</zh></word><word><en>fire</en><zh>火</zh></word><word><en>word</en><zh>词库</zh></word></words>