php技术对xml文件进行操作

来源:互联网 发布:天刀魏无羡捏脸数据 编辑:程序博客网 时间:2024/05/08 18:49

使用php技术对xml文件进行操作

常用的三种技术

①      php dom

②      php 结合xpath 操作xml

③      SimpleXml

说明Dom

dom(document object model) 文档-对象-模型,核心思想是把一个xml文件,看成一个对象模型,然后通过对象的方式来操作xml文件

php dom技术对xml文件进行增删改查操作实例:

xml文件:

<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?><班级><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu><stu 性别="男" 年龄="100"><name>韩顺平8</name><sex>男</sex><age>80</age><介绍>学习不刻苦</介绍></stu></班级></span>

1、查询:

<span style="font-size:18px;"><?phpheader("Content-Type:text/html;Charset=utf-8");//解析一个文件的步骤//1.创建一个DOMDocument对象 表示文档$xmldoc=new DOMDocument();//2.指定加载哪个xml,解析哪个文件$xmldoc->load("test.xml");//3.获取你关心的节点//把所有的学生获取(DOMNodeList )$stus=$xmldoc->getElementsByTagName("stu");/* var_dump($stus->item(4));exit; *///4.遍历for($i=0;$i<$stus->length;$i++){    //取出学生    $stu=$stus->item($i);    //各个信息    echo getNodeVal($stu,"name")."--"        .getNodeVal($stu,"sex")."--".getNodeVal($stu,"age")."--".getNodeVal($stu,"介绍")."<br/>";}function getNodeVal(&$MyNode,$tagName){    return $MyNode->getElementsByTagName($tagName)->item(0)->nodeValue;}?></span>
2、添加:

<span style="font-size:18px;"><?php    header("Content-Type:text/html;Charset=utf-8");//该案例演示对xml文件的增删改//1创建DOMDocument$xmldoc=new DoMDocument();//2.加载xml文件$xmldoc->load("test.xml");//3.演示如何添加一个学生信息(同时增加一个性别的属性)//(1)取出根节点$root=$xmldoc->getElementsByTagName("班级")->item(0);//(2)创建学生节点$stu_node=$xmldoc->createElement("stu");//echo $stu_node->nodeType;//******添加属性节点*******//创建属性节点$stu_node->setAttribute("性别","男");$stu_node->setAttribute("年龄","100");//(3)创建名字节点$stu_node_name=$xmldoc->createElement("name");$stu_node_name->nodeValue="韩顺平8"; //为什么我们可以使用nodeValue属性??//把名字节点挂载到学生节点下$stu_node->appendChild($stu_node_name);// 创建性别$stu_node_sex=$xmldoc->createElement("sex");$stu_node_sex->nodeValue="男";//把性别节点挂载到学生节点$stu_node->appendChild($stu_node_sex);// 创建年龄$stu_node_age=$xmldoc->createElement("age");$stu_node_age->nodeValue="80"; //把年龄节点挂载到学生节点$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("test.xml");echo "成功!";?></span>

3、删除:

<span style="font-size:18px;"><?php header("Content-Type:text/html;Charset=utf-8");//1创建DOMDocument$xmldoc=new DoMDocument();//2.加载xml文件$xmldoc->load("test.xml");//3.演示如何添加一个学生信息//(1)取出根节点$root=$xmldoc->getElementsByTagName("班级")->item(0);//删除第3个学生//1.找到该学生$stus=$xmldoc->getElementsByTagName("stu");$stu1=$stus->item(0);//$root->removeChild($stu1);/* DOM 属性:innerHTML - 节点(元素)的文本值parentNode - 节点(元素)的父节点childNodes - 节点(元素)的子节点attributes - 节点(元素)的属性节点 *///这里有一个更加灵活的方法$stu1->parentNode->removeChild($stu1);//更新文件$xmldoc->save("test.xml");echo "删除ok";?></span>

4、更新:

<span style="font-size:18px;"><?phpheader("Content-Type:text/html;Charset=utf-8");//更新某个节点值//把第一个学生的年龄+10//1.创建DOMDocument$xmldoc=new DoMDocument();//2.加载xml文件$xmldoc->load("test.xml");//更新步骤//(1)找到这个学生$stus=$xmldoc->getElementsByTagName("stu");$stu1=$stus->item(0);//即使下面只有一个指定名字标签,也要加 item(0) ,因为系统本身并不知道有几个,若不加,系统不能识别。$stu1_age=$stu1->getElementsByTagName("age")->item(0);$stu1_age->nodeValue+=10;//更新文件$xmldoc->save("test.xml");echo "更新ok";?></span>


0 0