zoukankan      html  css  js  c++  java
  • 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

    作业二:在线词霸

  • 相关阅读:
    React元素渲染
    初识JSX
    微信小程序复制文本到剪切板
    微信小程序报错request:fail url not in domain list
    小程序,通过自定义编译条件,模拟推荐人功能
    积分抵扣逻辑
    微信小程序 switch 样式
    tomcat 配置开启 APR 模式
    tomcat8 传输json 报错 Invalid character found in the request target. The valid characters are defined in RFC 3986
    c++数组初始化误区
  • 原文地址:https://www.cnblogs.com/lifushan/p/5423303.html
Copyright © 2011-2022 走看看