码迷,mamicode.com
首页 > 其他好文 > 详细

20150202--XML下02

时间:2016-04-23 01:25:54      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

三、PHP SimpleXML实现对XML的增删改查

1、载入XML文件到内存,并形成SimpleXML对象

simpleXMLElement simplexml_load_file ( string $filename) :载入xml文件到内存并生成simpleXML对象

SimpleXMLElement::__construct ( string data)

示例代码:

技术分享

运行效果:

技术分享

2、如何输入指定文本节点的值

技术分享

运行效果:

技术分享

3、如何遍历输出所有数据?

方法一:通过foreach直接遍历数组

示例代码:

技术分享

运行效果:

技术分享

方法二:

通过children()方法实现对xml数据的遍历输出

技术分享

该方法可以直接获取到当前对象的子节点

示例代码:

技术分享

技术分享

4、如何输出属性?

在simplexml对象中,对于属性的读取有些特殊,不能通过以上方法直接读取,必须借助外在方式:

通过数组方式直接读取:

示例代码:

技术分享

通过attributes()方法获取到属性对象,并输入属性的值

技术分享

示例代码:

技术分享

5、扩展案例:查询天气预报并给出相应的建议

思路:

1)直接通过Ajax获取中国天气网API接口

2)可以通过百度开发平台提供的API接口

a)打开百度开放平台

网址:http://developer.baidu.com/

b)找到LBS云,找到车联网API打开,如下图所示

技术分享

通过观察以上说明,可以发现,系统只提供了一个url地址,由于我们访问某一个网址,实际上都是向该网址发送HTTP请求,请求分为两种:GET请求与POST请求

1)通过阅读接口说明判断该请求是GET或POST

2)直接复制网址url到浏览器地址栏,如能正常获取数据代表其是GET请求

输入以上api地址,可以返回数据,证明当前请求为GET请求

那我们可以使用file_get_contents()来模拟GET请求

通过分析其url地址可以发现,我们最少要提供两个参数

location:城市名称

ak:开发者密钥

示例代码:

技术分享

运行效果:

技术分享

6、simplexml添加节点

要用到的知识点:

public SimpleXMLElement SimpleXMLElement::addChild ( string $name [, string $value] )

参数说明:

$name :创建的节点名称

$value :可选参数,该节点的值

注意:在simplexml中,添加节点只能从上往下依次添加,没有办法从下往上创建,谨记!!!!!

保存xml文件:asXML

技术分享

参数说明:

$filename:要保存文件名称

添加属性:addAttribute()方法

public void SimpleXMLElement::addAttribute ( string $name [, string $value [, string $namespace ]] )

参数说明:

$name:属性名

$value:属性值

示例代码:

技术分享

运行效果:

技术分享

7、simplexml修改与删除操作

修改操作,示例代码:

技术分享

删除操作,示例代码:

技术分享

四、Xpath

Mysql:SQL语句实现对数据的查找操作

XML:Xpath来实现对xml数据的查找操作

主要用于精确查询,更细致的查询

Xpath:路径查询语言:

1、使用绝对路径查询数据

在Xpath查询命令中,可以通过/代表要查询的绝对路径

说明:如果采用Xpath中的绝对路径,那么查询时,请从根元素一层一层向下查询,不能越级。

示例:

/AAA代表从根元素开始查起,由于后面只有一个AAA元素,所以当前查询代表查询根元素AAA

问题:如何确定要查询的是哪个节点?

/AAA/BBB/CCC

答:我们如果想确定要查询哪个节点,只需要确定最后一个斜杠(单斜或双斜)后面所跟的节点名称

可以通过simplexml中的xpath函数使用Xpath命令进行结合查询

技术分享

参数说明

$path : Xpath查询命令

技术分享

运行结果:

技术分享

案例:通过xpath查询所有title节点信息

技术分享

运行效果:

技术分享

2、使用相对路径查询数据

在Xpath语言中,可以通过一对双斜杠 // 来检索节点信息,不分层级

技术分享

运行结果:

技术分享

案例:通过xpath查询当前项目中的所有book节点

技术分享

运行效果:

技术分享

3、通过星号*查询所有数据

在Xpath语言中,可以通过*来查询某一位置下的所有元素

案例:获取book节点下的所有子节点

技术分享

说明:

在Xpath语言中可以通过*星号来获取子节点的数目,但是暂无无法直接通过*星号来获取里面的值

技术分享

4、使用[]方括号进行条件查询

可以通过[index]:默认情况index是从1开始的

还可以通过[last()]:获取最后一个元素

示例代码:

技术分享

运行效果:

技术分享

5、通过@符号进行属性查询

案例:通过@*获取library.xml文件中所有具有属性的book元素

技术分享

运行结果:

技术分享

6、扩充xpath中的[]条件查询

案例:通过[]查询查询author为旺财的图书信息

技术分享

运行效果:

技术分享

五、案例:在线词霸

1、界面设计

技术分享

2、设计数据库

data.xml

技术分享

3、后台系统设计

经验:如何确定先设计模块的后台或前台,首先请确定数据库中的数据由哪来,如果是从后台来,那么先实现后台,如前台,那么请先设计前台。

技术分享

4、前台功能实现:

技术分享

运行效果:

技术分享

作业二:在线词霸

20150202--XML下02

标签:

原文地址:http://www.cnblogs.com/lifushan/p/5423303.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!