当前位置:编程学习 > XML/UML >>

一个查询、修改单词的界面和后台用XML文件存放单词的php程序

直接贴代码吧!主要有两个文件,一个查询、修改单词的表单所处的页面。然后另外一个文件用于将单词保存到XML文件中,使用的类是DOMDocument类。这个类就是用于操作XML文件的。
 
 
<head>  
<title>test for xml file</title>  
<script type="text/javascript">  
<!--  
function cssShow(){  
    var b=document.getElementById("sele");  
    if(b.value==2){  
        document.getElementById("desc").style.display="none";  
        document.getElementById("note").style.display="none";  
    }  
    else {  
        document.getElementById("desc").style.display="inline-block";  
        document.getElementById("note").style.display="inline-block";  
    }  
}  
-->  
</script>  
</head>  
<form  action="./test.php" method="post">   
word:   <input type="text" size=20 name="word"/><br/>  
<span  id="desc">descri: <input type="text" size=20 name="descri"/></span><br/>  
<span id="note">note:   <input  type="text" size=20 name="note"/></span><br/>  
<select id="sele" name="select" onchange="javascript:cssShow();">  
<option value="1" selected="selected">insert</option>  
<option value="2">query</option>  
</select><br/>  
<input type="submit" value="submit"/>  
</form>  
<?php   
    header("content-type:text/html;charset=utf-8");  
    require_once 'xml.class.php';  
    if(isset($_POST['select'])){  
        $word=$descri=$note="";  
        $dom = new XMLOper();  
        if(isset($_POST['word'])){  
            $word=$_POST['word'];  
            $word=strtoupper($word);  
        }  
        if(isset($_POST['descri'])){  
            $descri=$_POST['descri'];  
        }  
        if(isset($_POST['note'])){  
            $note=$_POST['note'];  
        }  
        $arr=array($descri,$word,$note);  
        switch($_POST['select']){  
            case 1:if(!$dom->checkWord($word)){$dom->xml_insert($arr);$dom->save();echo "successful";}  
                    else {echo "danci has exist yet!";}exit;  
            case 2:if(!$dom->checkWord($word)) die("no word in the dbtable");  
                   $arr=$dom->xml_query($word);  
                   if($arr[0]==""){  
                        die("no word in xml");  
                    }  
                    echo "result:<br/>word:$arr[0]<br/>descri:$arr[1]<br/>note:$arr[2]";  
                  
        }  
    }  
?>  

 

 
xml.class.php文件如下:
 
<?php  
class XMLOper {  
    private  $dom;  
    private  $root;  
    public function __construct(){  
        $this->dom =new DOMDocument("1.0","utf-8");  
        $this->dom->formatOutput=true;  
    }  
    public function xml_query($word){  
        $bool=$this->dom->load("test.xml");  
        if(!$bool)echo "error when load the xml file<br/>";  
        $arr=array();  
        $temp=$this->dom->getElementById($word);  
        $arr[0]=$temp->getElementsByTagName("NAME")->item(0)->nodeValue;  
        $arr[1]=$temp->getElementsByTagName("DESCRI")->item(0)->nodeValue;  
        $arr[2]=$temp->getElementsByTagName("NOTES")->item(0)->nodeValue;  
        return $arr;  
    }  
    public function setTextNode($Node,$content){  
        $Node->appendChild($this->dom->createTextNode($content));  
    }  
    public function xml_insert($contentArray){  
        $arr=array("WORD","DESCRI","NAME","NOTES");  
        $this->setRootEle("DANCI");  
        for($j=0;$j<4;$j++){  
            $tempArr[$j]=$this->dom->createElement($arr[$j]);  
        }  
        $word=$this->root->appendChild($tempArr[0]);  
        for($j=1;$j<4;$j++){  
            $this->setTextNode($word->appendChild($tempArr[$j]),$contentArray[$j-1]);  
        }     
        $word->setAttribute("id", $contentArray[1]);   
    }  
    public function setRootEle($name){  
        $this->root=$this->dom->appendChild($this->dom->createElement($name));  
    }  
    public function checkWord($word){  
        $str=file_get_contents("test.xml");  
        if(preg_match("/<NAME>".$word."<\/NAME>/", $str)==1)return true;  
        else return false;  
    }  
    public function save(){  
        $this->dom->save("temp.xml");  
        $fp=fopen("temp.xml", "r+");//不能用w+,要不然文件就会被覆盖,这种方式会覆盖之前写过的信息,而不是插入。  
        /*下面的一句话就可以让保存的文件的编码设为UTF-8,而文件默认编码方式为ANSI。这一点可以用记事本程序查看文件的编码方式 
         fwrite($fp,"\xef\xbb\xbf");*/  
        fwrite($fp, "<?xml ?>");    
        fgets($fp,200);//第一行字节留有200足够,使文件指针转移到下一行  
        //fgets($fp,200);  
        $xml="";  
        while(!feof($fp)){  
        $xml.=fread($fp, 1024);  
        }  
        $xml.="</TABLE>";  
        fclose($fp);  
        $str=file_get_contents("test.xml");  
        $pattern="/<\/TABLE>/";$replacement="";  
        $str=preg_replace($pattern,$replacement,$str);  
        file_put_contents("test.xml",$str);  
        $fp=fopen("test.xml", "a+");          
        fwrite($fp,$xml);  
        fclose($fp);  
    }  
}  
      
      
  
  
  
?>  

 

 
 
补充:Web开发 , php ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,