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';
?>