php技术对xml文件进行操作

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

常用的三种技术

①      php dom

②      php 结合xpath 操作xml

③      SimpleXml

说明Dom

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

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

xml文件:


<班级>
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦
韩顺平880<介绍>学习不刻苦


1、查询:

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,"介绍")."
"; } function getNodeVal(&$MyNode,$tagName){ return $MyNode->getElementsByTagName($tagName)->item(0)->nodeValue; } ?>
2、添加:

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 "成功!";
	
?>

3、删除:

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

4、更新:

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


你可能感兴趣的:(XML)