XML数据的curd实现(PHP)

xml文档:

<?xml version="1.0" encoding="utf-8"?>
<班级>
    <学生>
        <名字>周星驰</名字>
        <年龄>33</年龄>
        <介绍>学习刻苦</介绍>
    </学生>
    <学生>
        <名字>林青霞</名字>
        <年龄>32</年龄>
        <介绍>是一个好学生</介绍>
    </学生>
    <学生>
        <名字>李俊</名字>
        <年龄>18</年龄>
        <介绍>好好学习</介绍>
    </学生>
    <学生 性别="男">
        <名字>李俊888</名字>
        <年龄>18</年龄>
        <介绍>好好学习</介绍>
    </学生>
</班级>

一: 查

<?php
//解析一个文件的步骤
//1:创建一个DOMDocument对象 表示文档
$xmldoc=new DOMDocument();
 
//2:指定加载哪个xml,解析哪个文件
$xmldoc->load("classes.xml");
 
//3:获取你关心的节点
//把所有的学生获取(DOMNodeList)
$stus=$xmldoc->getElementsByTagName('学生');
 
//4:遍历
for($i=0;$i<$stus->length;$i++){
    //取出学生
    $stu=$stus->item($i);
    //取出各个信息
    echo getNodeVal($stu,'名字').getNodeVal($stu,'年龄').getNodeVal($stu,'介绍')."<br/>";
}
 
 
function getNodeVal($stu,$tagName){
    return $stu->getElementsByTagName($tagName)->item(0)->nodeValue;
}
 
?>

二:增

<?php
 
//该案例演示对xml文件的增删改
//1:创建DOMDocument
$xmldoc=new DOMDocument();
//2:加载xml文件
$xmldoc->load("classes.xml");
//3:添加一个学生信息(同时增加一个性别的属性)
//⑴:取出根节点
$root=$xmldoc->getElementsByTagName("班级")->item(0);
//⑵:创建学生节点
$stu_node=$xmldoc->createElement("学生");
 
//echo $stu_node->nodeType;
//添加属性节点
//创建属性节点
$stu_node->setAttribute("性别","男");
 
//⑶:创建名字节点
$stu_node_name=$xmldoc->createElement("名字");
$stu_node_name->nodeValue="李俊888";
//把名字挂载到学生节点下
$stu_node->appendChild($stu_node_name);
//⑷:创建年龄节点
$stu_node_age=$xmldoc->createElement("年龄");
$stu_node_age->nodeValue="18";
//把年龄节点挂载到学生节点下
$stu_node->appendChild($stu_node_age);
//⑸:创建介绍节点
$stu_node_intro=$xmldoc->createElement("介绍");
$stu_node_intro->nodeValue="好好学习";
$stu_node->appendChild($stu_node_intro);
//把新的学生节点挂载到根节点
$root->appendChild($stu_node);
//重新保存回xml文件
//如果save到源文件,则相当于是对文件更新
//如果save是新的文件名,则是保存到新文件
$xmldoc->save("classes.xml");
echo 'chengong';
 
 
?>

三:删

<?php
$xmldoc=new DOMDocument();
$xmldoc->load("classes.xml");
//$root=$xmldoc->getElementsByTagName("班级")->item(0);
//删除第3个学生
//1.找到这个学生
$stus=$xmldoc->getElementsByTagName("学生");
$stu1=$stus->item(3);
//$root->removeChild($stu1);
//这里有一个更加灵活的方法
$stu1->parentNode->removeChild($stu1);
 
$xmldoc->save("classes.xml");
echo 'ok';
 
?>

四:改

<?php
$xmldoc=new DOMDocument();
$xmldoc->load("classes.xml");
//$root=$xmldoc->getElementsByTagName("班级");
//更新某个节点的值
//1:找到这个学生
$stus=$xmldoc->getElementsByTagName("学生");
$stu1=$stus->item(0);
$stu1_age=$stu1->getElementsByTagName("年龄")->item(0);
$stu1_age->nodeValue+=10;
$xmldoc->save("classes.xml");
 
 
echo 'ok';
?>

用到了PHP的simple_php插件,很简单,但是功能也有限,但是对于我们使用来说已经足够了。

<!DOCTYPE html>
<html>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0-rc1.js"></script>
	<link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">  
	<script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
	<script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<body>
<div text-align="center"><h3 >xml实验课作业:增删改查</h3></div>
<br>
<form role="form" action="change.php" method="post">
<div class="form-group">
	<div class="form-inline"><label for="name">标签:</label><input class="form-control" placeholder="请输入" type="text" name="id"></div>
	<div class="form-inline"><label for="name">属性:</label><input class="form-control" placeholder="请输入" type="text" name="value"></div>
	<button  class="btn btn-success" type="submit" >提交</button>
	</div>
</form>
<form action="delete.php" method="post">
	<div class="form-inline"><label for="name">删除标签:</label><input  placeholder="请输入" class="form-control"  type="text" name="id"></div>
	<button type="submit" class="btn btn-success">提交</button>
</form>
<br>
<div>所有信息:</div>
<?php
$xml=simplexml_load_file("note.xml");
echo $xml->getName() . "<br>";
foreach($xml->children() as $child)
{
    if($child!=''){
		echo "  ".$child->getName() . ": " . $child . "<br>";
	}
}
?>
</body>
</html>

下面代码是change.php,主要是将提交的增加或者修改命令进行执行

<!DOCTYPE html>
<html>
<script type="text/Javascript" src="http://code.jquery.com/jquery-1.11.0-rc1.js"></script>
<link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">  
	<script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
	<script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<body>
 
<?php
$xml=simplexml_load_file("note.xml");
$id=$_POST["id"];
$value=$_POST["value"];
	//$xml->from=$from;直接修改方式
if($id!=''){
	$xml->$id=$value;
}
$xml->asXML('note.xml'); 
echo "修改完毕,请返回";
?>
<br>
<a href="http://123.206.58.204"> 返回</a>
<br>
<?php
$xml=simplexml_load_file("note.xml");
foreach($xml->children() as $child)
{
  if($child!=''){
		echo $child->getName() . ": " . $child . "<br>";
	}
}
?>
<br>
</html>

这个是delete.php,对标签进行删除

<!DOCTYPE html>
<html>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0-rc1.js"></script>
<link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">  
	<script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
	<script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<body>
<?php
$xml=simplexml_load_file("note.xml");
$id=$_POST["id"];
	//$xml->from=$from;直接修改方式
	$xml->$id=$value;
$xml->asXML('note.xml'); 
echo "修改完毕,请返回";
?>
<br>
<a href="http://123.206.58.204">返回</a>
<br>
<?php
$xml=simplexml_load_file("note.xml");
echo $xml->getName() . "<br>";
foreach($xml->children() as $child)
{
    if($child!=''){
		echo $child->getName() . ": " . $child . "<br>";
	}
}
?>
</body>
</html>

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

XML数据的curd实现(PHP)