使用php技术对xml文件进行操作常用的三种技术
1.php dom www.w3school.com.cn/xmldom/
2.php 结合xpath 操作xml www.w3school.com.cn/xpath/xpath_syntax.asp
3.SimpleXml www.w3school.com.cn/php/php_ref_simplexml.asp
dom操作
<?php header("Content-Type: text/html; charset=utf-8");// 创建一个domdocument对象 表示文档 $xmldoc=new DOMDocument(); $xmldoc->load("classes.xml");// 指定加载那个xml 解析那个文件 $stus=$xmldoc->getElementsByTagName("学生");// 查询节点 把所有的学生获取(domnodelist) for($i=0; $i<$stus->length;$i++) {// 遍历 $stu=$stus->item($i); //取出学生 echo getNodeVal($stu,"名字")."--".getNodeVal($stu,"年龄").getNodeVal($stu,"介绍")."<br/>"; //各个信息 } function getNodeVal(&$MyNode,$tagName){ return $MyNode->getElementsByTagName($tagName)->item(0)->nodeValue; } // 添加节点 // $root=$xmldoc->getElementsByTagName("班级")->item(0); // $stu_node=$xmldoc->createElement("学生"); // $stu_node->setAttribute("性别","男"); // $stu_node_name=$xmldoc->createElement("名字"); // $stu_node_name->nodeValue="小明"; //$stu_node->appendChild($stu_node_name);
//$stu_node_age=$xmldoc->createElement("年龄");
//$stu_node_age->nodeValue="12"; // $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); // $xmldoc->save("classes.xml"); // echo "添加成功"; // 删除节点 // $root=$xmldoc->getElementsByTagName("班级")->item(0); // $stus=$xmldoc->getElementsByTagName("学生"); // $stu1=$stus->item(2); // $stu1->parentNode->removeChild($stu1); // $xmldoc->save("classes.xml"); // echo "删除成功"; // 修改节点 // $stus=$xmldoc->getElementsByTagName("学生"); // $stu1=$stus->item(0); // $stu1_age=$stu1->getElementsByTagName("年龄")->item(0); // $stu1_age->nodeValue+=10; // $xmldoc->save("classes.xml"); // echo "更新ok";
calsses.xml
<?xml version="1.0" encoding="utf-8"?> <班级> <学生> <名字>小马哥</名字> <年龄>63</年龄> <介绍>学习刻苦</介绍> </学生> <学生> <名字>林青霞</名字> <年龄>32</年龄> <介绍>是一个好学生</介绍> </学生> <学生> <名字>李彦宏</名字> <年龄>42</年龄> <介绍>百度</介绍> </学生> <学生> <名字>雷军</名字> <年龄>42</年龄> <介绍>小米</介绍> </学生> </班级>
simplexml操作(不能操作中文节点?)
<?php header("Content-Type: text/html; charset=utf-8"); $lib=simplexml_load_file("classes.xml"); //装载一个xml文件 //var_dump($lib); $books=$lib->book;//取出书,$books就是一个数组 //$book=$books[0]; //取出书名 //echo $book->title."||".$book->author."||".$book->code; for($i=0;$i<count($books);$i++){ $book=$books[$i]; //取出属性的值 echo '出版:'.$book['house']."<br/>"; echo '书名:'.$book->title."<br/>"; echo '价格:'.$book->price."<br/>"; echo '作者:'.$book->author."<br/>"; echo '编码:'.$book->code."<br/>"; } //SimpleXML也可以和xpath结合,功能强大 echo "<br/>*****simplexml 和 xpath结合****"; $titles=$lib->xpath("//title"); foreach($titles as $val){ echo "<br/>".$val; }
classes.xml
<?xml version="1.0" encoding="utf-8"?> <books> <book house="清华出版社"> <code>001</code> <price>9.9</price> <author>金庸</author> <title>天龙八部</title> </book> <book house="北大出版社"> <code>002</code> <price>10</price> <author>小明</author> <title>笑傲江湖</title> </book> </books>