三、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、前台功能实现:
运行效果: