您的位置:首页 > 编程语言 > PHP开发

PHP 操作xml编程---词库练习

2013-05-23 17:44 246 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: