• 在线音乐试听
  • 电影观看找一找
  • 微客许愿LOVE墙
  • 官方博客
  • 站长博客
中国微(微机)客网
站点选择: 网通镜像
  • 首 页
  • 电脑基础
  • 软件教程
  • 代码编程
  • 站长专区
  • 网络资源
  • 新闻娱乐
  • 站长博客
向站长投递您的原创文章 对本站意见反馈
  • 站长热点通告:电脑技术集中营!新上线版块: 点击许愿LOVE墙 点击进入站长博客 点击观看在线电影 点击试听在线音乐
  • 电脑硬件
  • 操作系统
  • 软件应用
  • 优化技巧
  • 防黑安全
  • P S 教程
  • Flash教程
  • Dreamweaver
  • 软件下载
  • Asp编程
  • Php编程
  • .Net编程
  • Access
  • MysQl
  • mssql
  • 其他代码
  • 站长工具
  • 搜索优化
  • 网站推广
  • 网站盈利
  • 域名空间
  • 网盘※相册
  • 综合其他
  • 游戏娱乐
  •                             | 在线音乐试听下载 | 在线电影观看| 在线小游戏| IT热点资讯 | 软件动态
                                      | 论坛快速注册 | 论坛会员登陆 | 论坛快速进入 | 许愿LOVE墙登陆
当前位置:中国微客网>>编程在线>>Php编程>>浏览文章 软件搜索

在PHP中运行XPath查询

作者:未知 | 来源:互联网 | 文章点击数: | ChinaVik.Com

XPath是一种可以对XML文档中的某一部分进行单独处理的一种语言,对于XSLT转换而言它尤其重要。XPath也可作为单独的工具管理应用程序中的XML数据,比如网络应用程序。

微软通过selectSingleNode() 和selectNodes()方法来提供的XPath功能,从而实现对DOM()节点和文档的操作。然而,PHP是通过程序中的环境(context)来实现XPath功能的。我将举例来说明如何利用PHP代码从XML文档中抽取不同的数据片断,并随后解释这些PHP代码是如何工作的。

在这个例子中,我使用了以下的XML数据。(注意:这些代码是在PHP 4.3.4、Windows XP和IIS 5.1条件下开发并运行成功的。)

http://www.chinavik.com>

color="yellow">Marmaduke

Garfield

Snoopy

Heathcliff

Spike

Sylvester

这个XML文档包含了一些元素(element)和属性(attribute),还有一个名域空间(namespace)的声明,都是一些基本的XML。在示例的PHP代码中,我们会从这个XML文档中得到多种的查询结果。

$sxml = '

    http://www.chinavik.com>

       

            Marmaduke

            Garfield

       

       

            Snoopy

            Heathcliff

       

       

            Spike

            Sylvester

       

    ';

$xml = domxml_open_mem($sxml);

$xpc = XPath_new_context($xml);

XPath_register_ns($xpc, "x", http://www.chinavik.com);

$nodes = XPath_eval($xpc, "//x:row/x:dog[@color='yellow']/text()");

foreach ($nodes->nodeset as $node) {

    print $node->content . " ";

}

$nodes = XPath_eval($xpc, "//x:row/x:dog");

foreach ($nodes->nodeset as $node) {

    print $xml->dump_node($node) . " ";

}

$nodes = XPath_eval($xpc, "//x:cat/child::text()|//x:dog[@color='white' or

@color='gray']/text()");

foreach ($nodes->nodeset as $node) {

    print $node->content . " ";

}

$xml->free();

?>

首先,创建一个局部变量来存储XML字符串,这一信息原本可以被传递并成为HTTP POST请求的一部分,然而,我要把它包含在代码中;下一步是要使用domxml_open_mem()来创建一个DOM文档,domxml_open_mem()可以从有效的XML字符串中在内存中创建一个DOM文档对象,它只有一个参数:XML字符串;另一种方法是将XML存储于一个单独的文件中,然后使用domxml_open_file()从文件中读取XML,它也只有一个参数:XML文件的文件名。

创建了DOM文档对象之后,就可以通过XPath_new_context()来创建这一对象的XPath环境了,它只需一个参数:当前的DOM文档对象。这一环境用于XPath表达式的运算,如果需要的话还可以用于注册名域空间。既然在XML中已经包括了一个名域空间,则使用XPath_register_ns()来注册名域空间,这样才能在XPath查询中使用前缀,XPath_register_ns()包括了三个参数:他们分别是XPath环境、前缀和名域空间。

现在可以运行XPath查询了,可以通过XPath_eval()来实现,它的第一参数是XPath的环境,第二参数是XPath表达式,XPath_eval()将返回一个DOM节点的数组,在我的代码中,我对节点集合进行单步调试,可以得到某些形式的输出。

在第一个XPath例子中,我抓取了所有‘color’属性等于‘yellow’,并且在x:row节点下的x:dog文本元素,在PHP中的XPath表达式和MSXML中的XPath有些细微的区别,我将‘/text()’部分包含在表达式中则只返回文本节点,而在MSXML中,你需要使用‘text’属性来访问文本节点,对返回的文本节点使用‘content’属性则可以取得文本节点的内容。

在第二个例子中,我抓取了在x:row节点下的x:dog元素,然而,这次我对DOM文档对象使用dump_node()方法来打印出具有适当节点的整个XML,dump_node()接受一个参数:需要转储内容的DOM节点。

在最后一个例子中,我抓取了所有‘color’属性等于’gray’的所有x:cat文本节点和x:dog文本节点,我再次对节点集合进行单步调试并打印出每个节点的内容,最后释放这个DOM文档对象。


朋友若要转载,采集本站内容,请注明出自www.chinavik.com-中国微(微机)客网(搜集整理不容易)

上一篇:用PHP添加地图功能 下一篇:PHP生成带有雪花背景的验证码

关键字 Tags:  php 代码 编程
 查看所有评论请《点击右侧发表评论》【发表评论】【告诉好友】【打印此文】【收藏此文】【关闭窗口】



 发表评论 特别声明:
·本站发布内容均为客观表达作者观点,不代表站长立场,请勿攻击和漫骂
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为

网络广告信息

中国微客网音乐频道开通:在线MP3听歌、歌词下载 中国微客网影视频道开通:电影搜索引擎,在线看电影,电影在线观看,免费电影-在线观看下载,最新大片

推荐文章

  • ·PHP生成带有雪花背景的验证码 2008/02/07
  • ·用PHP添加地图功能 2008/02/07
  • ·用PHP命令行控制脚本 2008/02/07
  • ·利用PHP制作简单的内容采集器 2008/02/04
  • ·Php常见问题汇总与解答 2008/02/02
  • ·PHP做Web项目的优缺点 2008/02/02
  • ·php过滤危险html代码 2008/02/02
  • ·PHP常用的正则表达式 2008/02/02
  • ·在PHP中运行XPath查询 2008/02/07

热点资讯

  • ·利用PHP制作简单的内容采集器 2008/02/04
  • ·Php常见问题汇总与解答 2008/02/02
  • ·php过滤危险html代码 2008/02/02
  • ·PHP常用的正则表达式 2008/02/02
  • ·在PHP中运行XPath查询 2008/02/07

设为首页 - 加入收藏 - 联系站长 - 友情链接 - 网站留言 - 广告合作 - 网站地图


郑重声明:本站内容均来自网上,请网友自行辨别!如有侵权请及时告知,我们会马上处理!...本站内容纯手工录入,若转载请注明出处,万分感谢。
点击技术支持,建议合作 QQ:在线交谈11753718 QQ交流群 47614632 E-Mail:chinavik#163.com 电话tell:15898705041 chinavik#126.com
Copyright 2006-2008 Powered by 中国微客-电脑技术在线All Rights Reserved
备案/许可证号:鲁ICP备08002060号