php dom xml增删改查crud

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




?>



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值