XPAth技术

XPath的设计的核心思想,可以通过xpath迅速简介的定位到你希望查找的节点。主要目的是描述节点相对其他节点的位置,可以取得所有符合条件的节点,成为[位置路径]。

Xapth主要用来在XML文档中查询信息的工具,通过使用路径表达式可以解析XML文件,读取XML文件中的数据

下面以案例来介绍,XML 文件如下(simplexml.xml):

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <books>
  3. <book house="qinghuachubanshe">
  4. <code>sb001</code>
  5. <price>200</price>
  6. <author>xiaoming</author>
  7. <title>tianlongbabu</title>
  8. </book>
  9. <book house="beidachubanshe">
  10. <code>sb002</code>
  11. <price>400</price>
  12. <author>daming</author>
  13. <title>xiaoaojianghu</title>
  14. </book>
  15. </books>

PHP 代码如下:

  1. <?php
  2. //1 创建DOMDocument对象
  3. $dom = new DOMDocument("1.0", "UTF-8");
  4.  
  5. //2 加载Xml文件
  6. $dom->load("simplexml.xml");
  7.  
  8. //3 转成DomXPath对象
  9. $xpath = new DOMXPath($dom);
  10.  
  11. //4 查找工作
  12.  
  13. $node_list = $xpath->query("/books/book/title");
  14. echo "一共有".$node_list->length."个<br/>";
  15. for($i=0; $i<$node_list->length;$i++){
  16.  
  17. $node = $node_list->item($i);
  18. // var_dump($node_list);
  19. /*foreach ($node as $key=>$val){
  20. echo
} */
  1. echo $node->nodeName.":".$node->nodeValue."<br/>";
  2. }
  3. ?>

输入如下:

一共有2个
title:tianlongbabu

title:xiaoaojianghu


想更深入得了解XPath的使用,请参考XPath文档:http://download.csdn.net/detail/jsh13417/6042671

simpleXml

simpleXMl的核心思想:以面向对象的方法来操作Xml文件。simpleXml是比较简单的方式,通常会和XPath配合使用,


  1. <?php
  2.  
  3. //装载方式1 ‘装载一个Xml文件
  4. // $lib = simplexml_load_file("simplexml.xml");
  5. //2 DOM 对象装载方式
  6. //1 创建DOMDocument对象
  7. $dom = new DOMDocument("1.0", "UTF-8");
  8.  
  9. //2 加载Xml文件
  10. $dom->load("simplexml.xml");
  11.  
  12. $lib = simplexml_import_dom($dom);
  13.  
  14. echo "<pre>";
  15. // var_dump($lib);/*1*/
  16. echo "</pre>";
  17.  
  18. //取出书,
  19. $books = $lib->book;
  20. /* //取出第一本书
  21. $book1=$books[0];
  22. //取出书名
  23. echo $book1->title.":".$book1->author; */
  24. for($i=0;$i<count($books);$i++){
  25. $book1=$books[$i];
  26. //取出属性
  27. echo "属性:".$book1['house']."<br/>";
  28. echo "第".$i."本书的 书名||作者<br/>";
  29. echo $book1->title."||".$book1->author."<br/>";
  30. }
  31.  
  32. echo "***simplexml 和xpath结合使用***<br/>";
  33. echo "取出所有的书名:<br/>";
  34. $titles = $lib->xpath("//title");
  35. foreach ($titles as $key=>$val){
  36. echo "<br/>".$key."||".$val;
  37. }
  38. echo "<br/>*********************************";
  39. ?>

输出如下:

  1. 属性:qinghuachubanshe
  2. 0本书的 书名||作者
  3. tianlongbabu||xiaoming
  4. 属性:beidachubanshe
  5. 1本书的 书名||作者
  6. xiaoaojianghu||daming
  7. ***simplexml xpath结合使用***
  8. 取出所有的书名:
  9.  
  10. 0||tianlongbabu
  11. 1||xiaoaojianghu
  12. *********************************

第三种转载Xml方式,字符串方式,如下:

  1. <?php
  2. echo "<br/>simplexml也可以直接装载一个string字符串(Xml规范)";
  3.  
  4. $string = <<<XML
  5. <?xml version='1.0'?>
  6. <document>
  7. <title>Forty What?</title>
  8. <from>Joe</from>
  9. <to>Jane</to>
  10. <body>
  11. I know that's the answer -- but what's the question?
  12. </body>
  13. </document>
  14. XML;
  15.  
  16. $xml = simplexml_load_string($string);
  17.  
  18. print_r($xml);
  19.  
  20. ?>

以上便是对 2个Xml技术的简单入门介绍,想更深入的了解就需要看文档了。

参考资料:

PHP 自学之路-----XML编程(Xpath技术,simpleXml技术)基础入门的更多相关文章

  1. PHP 自学之路-----XML编程(Dom技术)

    上一节,讲了Xml文件基本语法及元素,实体及Dtd约束技术,下面就正式进入PHP的Xml编程 使用PHP技术对Xml文件进行操作 常用的有以下三种技术: 1.PHP dom 2.PHP结合XPath操 ...

  2. 容器技术之Docker基础入门

    前文我们了解了下LXC的基础用法以及图形管理工具LXC WEB Panel的简单使用,有兴趣的朋友可以参考https://www.cnblogs.com/qiuhom-1874/p/12904188. ...

  3. 【二十八】xml编程(dom\xpath\simplexml)

    1.xml基础概念 作用范围: 作为程序通讯的标准. 作为配置文件. 作为小型数据库. xml语法: <根标签> <标签 元素="元素值" ...>< ...

  4. 【转】JAVA自学之路

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

  5. 【转】Java自学之路——by马士兵

    作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟 ...

  6. Java自学之路(新手一定要看)

    Java自学之路(新手一定要看) 转自尚学堂 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游 ...

  7. [感悟]马士兵Java自学之路——(精华版)

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

  8. 马士兵_JAVA自学之路(为那些目标模糊的码农们)

    转载自:http://blog.csdn.net/anlidengshiwei/article/details/42264301 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. ...

  9. C++的XML编程经验――LIBXML2库使用指南[转]

    C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML ...

随机推荐

  1. xcode 工具栏中放大镜的替换的简单说明

    1.如果是在打开的文档范围内:       查找: Command+ F       替换: Option+Command+F                   Replace All   是全部替 ...

  2. javascript条件运算符

    variablename=(condition)?value1:value2 javascript条件运算符

  3. ##DAY1 UI、frame、center、bounds、UIVIew

    ##DAY1 UI.frame.center.bounds.UIVIew #pragma mark ———————UI——————————— UI的本意是用户界面,是英文User和 Interface ...

  4. UVa1585 Score

    #include <stdio.h> int main(){    int T, O, score;    char str[81], *p;    scanf("%d" ...

  5. python函数abs()

    详解: 返回绝对值 参数可以是:负数.正数.浮点数或者长整形 实例: abs(-1.2) #返回 1.2 abs(1.2) #返回 1.2 abs(-11216.5) #返回 11216.5 abs( ...

  6. 前端笔试题 JS部分

    题目 http://www.itmian4.com/forum.php?mod=viewthread&tid=4540 http://www.itmian4.com/forum.php?mod ...

  7. 一劳永逸让windows 64位操作系统 禁止强制驱动签名

    如何让WINDOWS7 64位直接加载“禁用强制驱动程序签名”方式启动  Windows Client 论坛 > Windows 7 问题 0 登录进行投票 因为开发需要,要装一台设备的驱动,但 ...

  8. 基于Visual C++2013拆解世界五百强面试题--题9-找出所有的排列方式

    给出一个函数来输出一个字符串的所有排列 按照排列组合的知识我们知道 N个字符排列组合个数有n!种, 那么可知f(n) = n*f(n-1), 如果{1,2}的组合有两种,12,21, 那么{123}的 ...

  9. 实现最小宽度的几种方法及CSS Expression[转]

    实现最小宽度的几种方法及CSS Expression[转] 实现最小宽度的几种方法:css表达式尽量不用 支持FF IE7  IE6 .test { background:blue; min-widt ...

  10. HDU 3746 Cyclic Nacklace KMP

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3746 KMP算法—— AC代码: #include <iostream> #include ...