您当前的位置: 首页 > 学无止境 > XML与XSLT 网站首页XML与XSLT
微型数据库xml与php进行查询的操作
发布时间:2015-04-04 22:49:16编辑:雪饮阅读()
php与数据库最常见的结合就是mysql数据库,可是mysql与php的交互查询并不是最快的,今天就给大家说说更快的数据库-微型数据库(xml)与php之间进行的查询操作:
我们这里写好了一个xml源文件(wsjk.xml):
<?xml version="1.0" encoding="utf-8"?>
<班级>
<学生>
<名字>周星驰</名字>
<年龄>23</年龄>
<介绍>学习刻苦</介绍>
</学生>
<学生>
<名字>林青霞</名字>
<年龄>32</年龄>
<介绍>是一个好学生</介绍>
</学生>
<学生>
<名字>雪饮个人博客欢迎你</名字>
<年龄>32</年龄>
<介绍>是雪饮的个人博客网站</介绍>
</学生>
</班级>
然后我们来通过php查询该xml节点值,php源代码(phpdom1.php)如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1
-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
//创建DOMDocument对象
$xmldoc=new DOMDocument();
//加载xml
$xmldoc->load("wsjk.xml");
//获取学生节点列表
$stus=$xmldoc->getElementsByTagName("学生");
echo "共有学生节点".$stus->length."个";
echo "<br/>";
//取出第一个学生
$stu1=$stus->item(0);
//获取名字节点列表
$stuname=$stu1->getElementsByTagName("名字");
//取出第一个名字值并输出
echo $stuname->item(0)->nodeValue;
echo "<br/>";
echo "下面的值是通过函数快捷取出的:<br/>";
function getnodeval($jiedian,$biaoqian){
return $jiedian->getElementsByTagName($biaoqian)->item
(0)->nodeValue;
}
echo getnodeval($stu1,"名字");
?>
</body>
</html>
从上面php源代码可以总结下,php查询xml的整个步骤:创建DOMDocument对象》加载要查询的xml》对要查询的节点从最外层一层层的向下找》获取节点nodeValue值。
其中有两个比较重要的知识点值得注意:
1、如:$stus=$xmldoc->getElementsByTagName("学生");该语句虽然是获取“学生‘节点列表,大家都知道,但是其返回值好多人都会误解为一个数组,因为许多人就是看到了item(0)这种使用方式很类似数组,其实不然。这里返回值是一个对象是将返回值做为对象看待的。
2、item为什么总是要这样使用item(0)?这是因为php创建的DOMDocument对象并不知道你的xml某个节点里面具体有几个子标签。这里的item正好是注意点1中对象的方法。
既然我们可以用php对xml某个节点进行查询,那么我们也可以进行xml节点的遍历,源代码如下(phpdom2.php):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1
-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$xmldoc=new DOMDocument();
$xmldoc->load("wsjk.xml");
$stus=$xmldoc->getElementsByTagName("学生");
for($i=0;$i<$stus->length;$i++){
$stu=$stus->item($i);
echo "姓名:".getnodeval($stu,"名字")." 年
龄:".getnodeval($stu,"年龄")." 介
绍:".getnodeval($stu,"介绍")."<br/>";
}
function getnodeval($jiedian,$biaoqian){
return $jiedian->getElementsByTagName($biaoqian)->item
(0)->nodeValue;
}
?>
</body>
</html>
其遍历效果如下图所示:
雪饮个人博客总结归纳,多谢韩老师的讲解,原来php还可以这样玩。
关键字词:微型数据库,xml,个人博客
下一篇:php对xml文档节点的新增操作