• 20150202--XML下02


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

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

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

    SimpleXMLElement::__construct ( string data)

    示例代码:

    clip_image002

    运行效果:

    clip_image004

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

    clip_image006

    运行效果:

    clip_image008

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

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

    示例代码:

    clip_image010

    运行效果:

    clip_image012

    方法二:

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

    clip_image014

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

    示例代码:

    clip_image016

    clip_image018

    4、如何输出属性?

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

    通过数组方式直接读取:

    示例代码:

    clip_image020

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

    clip_image022

    示例代码:

    clip_image024

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

    思路:

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

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

    a)打开百度开放平台

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

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

    clip_image026

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

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

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

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

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

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

    location:城市名称

    ak:开发者密钥

    示例代码:

    clip_image028

    运行效果:

    clip_image030

    6、simplexml添加节点

    要用到的知识点:

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

    参数说明:

    $name :创建的节点名称

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

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

    保存xml文件:asXML

    clip_image032

    参数说明:

    $filename:要保存文件名称

    添加属性:addAttribute()方法

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

    参数说明:

    $name:属性名

    $value:属性值

    示例代码:

    clip_image034

    运行效果:

    clip_image036

    7、simplexml修改与删除操作

    修改操作,示例代码:

    clip_image038

    删除操作,示例代码:

    clip_image040

    四、Xpath

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

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

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

    Xpath:路径查询语言:

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

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

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

    示例:

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

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

    /AAA/BBB/CCC

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

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

    clip_image042

    参数说明

    $path : Xpath查询命令

    clip_image044

    运行结果:

    clip_image046

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

    clip_image048

    运行效果:

    clip_image050

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

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

    clip_image052

    运行结果:

    clip_image054

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

    clip_image056

    运行效果:

    clip_image058

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

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

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

    clip_image060

    说明:

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

    clip_image062

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

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

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

    示例代码:

    clip_image064

    运行效果:

    clip_image066

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

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

    clip_image068

    运行结果:

    clip_image070

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

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

    clip_image072

    运行效果:

    clip_image074

    五、案例:在线词霸

    1、界面设计

    clip_image076

    2、设计数据库

    data.xml

    clip_image078

    3、后台系统设计

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

    clip_image080

    4、前台功能实现:

    clip_image082

    运行效果:

    clip_image084

    作业二:在线词霸

  • 相关阅读:
    网页链接在 什么时候 进行跳转到哪里?
    word中那些重要但是被人忽略的快捷键和长word文档的跳转
    如何在editplus中配置ctags?
    winsow xp不能安装软件, 提示"中断" 是因为设置了 软件限制策略
    firefox的plugin-container.exe进程如何关闭?
    thinkphp的url地址区分大小写?
    thinkphp单入口和多入口的访问方法
    什么时候使用tab键来对齐代码和代码的风格
    该不该用inline-block取代float? inline和float的区别?
    cad中关于点样式点的绘制
  • 原文地址:https://www.cnblogs.com/lifushan/p/5423303.html
Copyright © 2020-2023  润新知