zoukankan      html  css  js  c++  java
  • xml php 解析

    JSON作为数据交换可以说已经成为了一种事实上的标准,但是前几年和它对应的xml虽然说用的越来越少,但是我感觉还是有他可以应用的地方。

    json更偏重于程序员来使用和解读,而xml则更适合用户来使用和解读。因此,存在这样的场景:用户使用xml来构造数据,通过一定的转换工具

    转成我们需要的数据格式,同时如果需要的话则可以转成对应的json.

    在php中一种非常好用的xml解析模式: simpleXML

    比如:

    <?xml version='1.0' standalone='yes'?> 
    <Messages> 
    <msg id='1'> 
    <title>This is Title</title> 
    <content>Here is Content</content> 
    <time>2008-03-20 21:50:23</time> 
    <reply id='11'>reply 1</reply> 
    <reply id='12'>reply 2</reply> 
    </msg> 
    </Messages> 

    上面这段xml代码,可以非常简单地实现如下:

    (1) 构造SimpleXMLElement 对象 

    代码片断 
    $xml = simplexml_load_file('Messages.xml'); 
    如果这段xml 已经被读入到一个字符串$messages 中,则可以使用如下语句: 
    代码片断 
    $xml = simplexml_load_string('Messages.xml'); 
    (2)输出留言1 的标题 
    代码片断 
    //可以使用属性的方式访问子节点,通过节点的标签名可直接得到节点的内容 
    echo $xml->msg->title; 
    (3)输出留言1 的第一条回复信息 
    代码片断 
    //同级别的多个同名节点自动成为数组,可以通过索引下标访问其内容 
    echo $xml->msg->reply[0]; 
    (4)输出留言的id 
    代码片断 
    //节点的属性与值被封装成为关联数组的键与值 
    echo $xml->msg['id']; 
    (5)输出第二条回复的id 
    代码片断 
    //成为二维数组,第一维表示节点,第二维表示属性 
    echo $xml->msg->reply[1][ 'id']; 
    (6)依次输出所有回复的id 
    代码片断 
    //使用foreach 对同名节点进行遍历 
    foreach ($xml->msg->reply as $reply){ 
    echo $reply['id']; 

    (7)使用XPath 检索所有的回复信息 
    代码片断 
    //xpath 方法直接检索定位(//表示任意深度) 
    foreach ($xml->xpath('//reply') as $reply){ 
    echo $reply.'<br>'; 


    (8)遍历留言1 所有的子节点 
    代码片断 
    //children 方法得到所有子节点 
    foreach ($xml->msg->children() as $field){ 
    echo $field.'<br>'; 

    (9)重新设置留言1 的发布时间 
    代码片断 
    //直接设置属性 
    $xml->msg->time = '2008-03-21 00:53:12'; 
    (10)设置回复2 的id 属性 
    代码片断 
    //设置管理数组的值 
    $xml->msg->reply[1]['id'] = '222'; 
    (11)新增一个描述消息作者的字段 
    代码片断 
    //直接设置属性 
    $xml->msg->author = 'zhangsan'; 
    (12)将消息的作者保存为属性 
    代码片断 
    //设置关联数组的key 
    $xml->msg['author'] = 'zhangsan'; 
    (13)重新保存对象到文件 
    代码片断 
    //保存 
    $xml->asXML('MessagesNew.xml'); 
    应该可以看出SimpleXML 有多简单了吧! 
    3 实例:XML 文件与数据库之间进行数据交互 
    下面提供一个相对完整的实例,将留言信息从MySQL 数据库中查询出来,保存成为一 
    个如上例所示的XML 文件。留言信息和回复信息独立保存在两张表中,使用MySQL 函数包 

    参考:

    http://www.cnblogs.com/likwo/archive/2011/08/24/2151836.html

  • 相关阅读:
    typescript-定义静态类型和对象类型
    typescript-全局安装
    Cube-ui的使用
    mobx-react
    Calatan Number
    快速排序
    Boyer-Moore
    优先级队列
    PointNet环境搭建
    h5py库
  • 原文地址:https://www.cnblogs.com/kidsitcn/p/6617849.html
Copyright © 2011-2022 走看看