PHP 自学之路-----XML编程(Xpath技术,simpleXml技术)基础入门
XPAth技术
XPath的设计的核心思想,可以通过xpath迅速简介的定位到你希望查找的节点。主要目的是描述节点相对其他节点的位置,可以取得所有符合条件的节点,成为[位置路径]。
Xapth主要用来在XML文档中查询信息的工具,通过使用路径表达式可以解析XML文件,读取XML文件中的数据
下面以案例来介绍,XML 文件如下(simplexml.xml):
- <?xml version="1.0" encoding="UTF-8"?>
- <books>
- <book house="qinghuachubanshe">
- <code>sb001</code>
- <price>200</price>
- <author>xiaoming</author>
- <title>tianlongbabu</title>
- </book>
- <book house="beidachubanshe">
- <code>sb002</code>
- <price>400</price>
- <author>daming</author>
- <title>xiaoaojianghu</title>
- </book>
- </books>
PHP 代码如下:
- <?php
- //1 创建DOMDocument对象
- $dom = new DOMDocument("1.0", "UTF-8");
- //2 加载Xml文件
- $dom->load("simplexml.xml");
- //3 转成DomXPath对象
- $xpath = new DOMXPath($dom);
- //4 查找工作
- $node_list = $xpath->query("/books/book/title");
- echo "一共有".$node_list->length."个<br/>";
- for($i=0; $i<$node_list->length;$i++){
- $node = $node_list->item($i);
- // var_dump($node_list);
- /*foreach ($node as $key=>$val){
- echo
} */
- echo $node->nodeName.":".$node->nodeValue."<br/>";
- }
- ?>
输入如下:
title:tianlongbabu
title:xiaoaojianghu
想更深入得了解XPath的使用,请参考XPath文档:http://download.csdn.net/detail/jsh13417/6042671
simpleXml
simpleXMl的核心思想:以面向对象的方法来操作Xml文件。simpleXml是比较简单的方式,通常会和XPath配合使用,
- <?php
- //装载方式1 ‘装载一个Xml文件
- // $lib = simplexml_load_file("simplexml.xml");
- //2 DOM 对象装载方式
- //1 创建DOMDocument对象
- $dom = new DOMDocument("1.0", "UTF-8");
- //2 加载Xml文件
- $dom->load("simplexml.xml");
- $lib = simplexml_import_dom($dom);
- echo "<pre>";
- // var_dump($lib);/*1*/
- echo "</pre>";
- //取出书,
- $books = $lib->book;
- /* //取出第一本书
- $book1=$books[0];
- //取出书名
- echo $book1->title.":".$book1->author; */
- for($i=0;$i<count($books);$i++){
- $book1=$books[$i];
- //取出属性
- echo "属性:".$book1['house']."<br/>";
- echo "第".$i."本书的 书名||作者<br/>";
- echo $book1->title."||".$book1->author."<br/>";
- }
- echo "***simplexml 和xpath结合使用***<br/>";
- echo "取出所有的书名:<br/>";
- $titles = $lib->xpath("//title");
- foreach ($titles as $key=>$val){
- echo "<br/>".$key."||".$val;
- }
- echo "<br/>*********************************";
- ?>
输出如下:
- 属性:qinghuachubanshe
- 第0本书的 书名||作者
- tianlongbabu||xiaoming
- 属性:beidachubanshe
- 第1本书的 书名||作者
- xiaoaojianghu||daming
- ***simplexml 和xpath结合使用***
- 取出所有的书名:
- 0||tianlongbabu
- 1||xiaoaojianghu
- *********************************
第三种转载Xml方式,字符串方式,如下:
- <?php
- echo "<br/>simplexml也可以直接装载一个string字符串(Xml规范)";
- $string = <<<XML
- <?xml version='1.0'?>
- <document>
- <title>Forty What?</title>
- <from>Joe</from>
- <to>Jane</to>
- <body>
- I know that's the answer -- but what's the question?
- </body>
- </document>
- XML;
- $xml = simplexml_load_string($string);
- print_r($xml);
- ?>
以上便是对 2个Xml技术的简单入门介绍,想更深入的了解就需要看文档了。
PHP 自学之路-----XML编程(Xpath技术,simpleXml技术)基础入门的更多相关文章
- PHP 自学之路-----XML编程(Dom技术)
上一节,讲了Xml文件基本语法及元素,实体及Dtd约束技术,下面就正式进入PHP的Xml编程 使用PHP技术对Xml文件进行操作 常用的有以下三种技术: 1.PHP dom 2.PHP结合XPath操 ...
- 容器技术之Docker基础入门
前文我们了解了下LXC的基础用法以及图形管理工具LXC WEB Panel的简单使用,有兴趣的朋友可以参考https://www.cnblogs.com/qiuhom-1874/p/12904188. ...
- 【二十八】xml编程(dom\xpath\simplexml)
1.xml基础概念 作用范围: 作为程序通讯的标准. 作为配置文件. 作为小型数据库. xml语法: <根标签> <标签 元素="元素值" ...>< ...
- 【转】JAVA自学之路
JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...
- 【转】Java自学之路——by马士兵
作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟 ...
- Java自学之路(新手一定要看)
Java自学之路(新手一定要看) 转自尚学堂 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游 ...
- [感悟]马士兵Java自学之路——(精华版)
JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...
- 马士兵_JAVA自学之路(为那些目标模糊的码农们)
转载自:http://blog.csdn.net/anlidengshiwei/article/details/42264301 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. ...
- C++的XML编程经验――LIBXML2库使用指南[转]
C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML ...
随机推荐
- xcode 工具栏中放大镜的替换的简单说明
1.如果是在打开的文档范围内: 查找: Command+ F 替换: Option+Command+F Replace All 是全部替 ...
- javascript条件运算符
variablename=(condition)?value1:value2 javascript条件运算符
- ##DAY1 UI、frame、center、bounds、UIVIew
##DAY1 UI.frame.center.bounds.UIVIew #pragma mark ———————UI——————————— UI的本意是用户界面,是英文User和 Interface ...
- UVa1585 Score
#include <stdio.h> int main(){ int T, O, score; char str[81], *p; scanf("%d" ...
- python函数abs()
详解: 返回绝对值 参数可以是:负数.正数.浮点数或者长整形 实例: abs(-1.2) #返回 1.2 abs(1.2) #返回 1.2 abs(-11216.5) #返回 11216.5 abs( ...
- 前端笔试题 JS部分
题目 http://www.itmian4.com/forum.php?mod=viewthread&tid=4540 http://www.itmian4.com/forum.php?mod ...
- 一劳永逸让windows 64位操作系统 禁止强制驱动签名
如何让WINDOWS7 64位直接加载“禁用强制驱动程序签名”方式启动 Windows Client 论坛 > Windows 7 问题 0 登录进行投票 因为开发需要,要装一台设备的驱动,但 ...
- 基于Visual C++2013拆解世界五百强面试题--题9-找出所有的排列方式
给出一个函数来输出一个字符串的所有排列 按照排列组合的知识我们知道 N个字符排列组合个数有n!种, 那么可知f(n) = n*f(n-1), 如果{1,2}的组合有两种,12,21, 那么{123}的 ...
- 实现最小宽度的几种方法及CSS Expression[转]
实现最小宽度的几种方法及CSS Expression[转] 实现最小宽度的几种方法:css表达式尽量不用 支持FF IE7 IE6 .test { background:blue; min-widt ...
- HDU 3746 Cyclic Nacklace KMP
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3746 KMP算法—— AC代码: #include <iostream> #include ...