zoukankan      html  css  js  c++  java
  • PHP 开发 APP 接口--XML篇

    1.PHP 生成 XML 数据

    ① 拼接字符串

    ② 使用系统类(DomDocument,XMLWriter,SimpleXML)

    例1 使用 PHP 系统类中的 DomDocument 类:

    <?php
    $dom = new DomDocument('1.0','utf-8');
    $element = $dom->createElement('test','This is a root element');
    $dom->appendChild($element);
    echo $dom->saveXML();

    页面输出

    This is a root element

    查看源代码显示:

    <?xml version="1.0" encoding="utf-8"?>
    <test>This is a root element</test>

    例2 拼接字符串

    复制代码
    //修改 http 头信息
    header("Content-Type:text/xml");
    //xml头信息
    $xml = "<?xml version='1.0' encoding='utf-8'?>
    ";
    //根节点开始标签
    $xml .= "<root>
    ";
    //code
    $xml .= "<code>200</code>
    ";    
    //message
    $xml .= "<message>数据返回成功</message>
    ";    
    //data
    $xml .= "<data>
    ";    
    $xml .= "<id>1</id>
    ";
    $xml .= "<name>John</name>
    ";
    $xml .= "</data>
    ";
    //根节点结束标签
    $xml .= "</root>";
    
    echo $xml;
    exit();
    复制代码

    页面输出:

    复制代码
    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    <root>
    <code>200</code>
    <message>数据返回成功</message>
    <data>
    <id>1</id>
    <name>John</name>
    </data>
    </root>
    复制代码

    http 响应头信息:

    2.XML 方式封装通信接口

    复制代码
    <?php
    
    class Response{
        /**
        * 按 xml 方式输出通信数据
        * @param integer $code 状态码
        * @param string $message 提示信息
        * @param array $data 数据
        * return string
        */
        public static function xml($code,$message,$data){
    
            if(!is_numeric($code)){
                return '';
            }
    
            $result = array(
                'code' => $code,
                'message' => $message,
                'data' => $data
            );
    
            //修改 http 头信息
            header("Content-Type:text/xml");
            //xml头信息
            $xml = "<?xml version='1.0' encoding='utf-8'?>";
            //根节点开始标签
            $xml .= "<root>";
    
            $xml .= self::xmlToEncode($result);
    
            //根节点结束标签
            $xml .= "</root>";
    
            echo $xml;
            exit();
        }
    
        //解析$result至xml
        public static function xmlToEncode($data){
            $xml = $attr = "";
            foreach($data as $k=>$v){
                //如果$k是数字(data(code,message,data中的data)数据里面还含有索引数组),要进行如下判断
                if(is_numeric($k)){
                    $attr = "id='{$k}'";
                    $k = 'item ';
                }
    
                $xml .= "<{$k} {$attr}>";
                //如果$v是数组,则递归调用该方法
                if(is_array($v)){
                    $xml .= self::xmlToEncode($v);
                }else{
                    $xml .= $v;
                }
                $xml .= "</{$k}>";
            }
    
            return $xml;
        }
    }
    复制代码

    调用该页面 test.php

    $data 第一种情况:

    复制代码
    <?php
    require 'response.php';
    
    $data = array(
        'id'=>1,
        'name'=>'Mary'
    );
    Response::xml(200,'数据返回成功',$data);
    复制代码

    页面输出:

    复制代码
    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    <root>
    <code>200</code>
    <message>数据返回成功</message>
    <data>
    <id>1</id>
    <name>Mary</name>
    </data>
    </root>
    复制代码

    $data 第二种情况

    复制代码
    <?php
    require 'response.php';
    
    $data = array(
        'id'=>1,
        'name'=>'Mary',
        'type'=>array(1,3,6) //<0>1</0><1>3</1><2>6</2>  => <item id="0">1</item>...
    );
    
    Response::xml(200,'数据返回成功',$data);
    复制代码

    页面输出:

    复制代码
    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    <root>
    <code>200</code>
    <message>数据返回成功</message>
    <data>
    <id>1</id>
    <name>Mary</name>
    <type>
    <item id="0">1</item>
    <item id="1">3</item>
    <item id="2">6</item>
    </type>
    </data>
    </root>
    复制代码

    $data 第三中情况:

    复制代码
    <?php
    require 'response.php';
    
    $data = array(
        'id'=>1,
        'name'=>'Mary',
        'type'=>array('a'=>1,'b'=>3,'c'=>6)
    );
    Response::xml(200,'数据返回成功',$data);
    复制代码

    页面输出:

    复制代码
    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    <root>
    <code>200</code>
    <message>数据返回成功</message>
    <data>
    <id>1</id>
    <name>Mary</name>
    <type>
    <a>1</a>
    <b>3</b>
    <c>6</c>
    </type>
    </data>
    </root>
    复制代码
  • 相关阅读:
    Axis,axis2,Xfire以及cxf对比 (转)
    客户端调用服务器端三种方式
    webservice发送数据,取数据的方式
    强制关闭myeclipse出现的问题
    取当前系统的上月时间
    oracle 报Ora-01008错误:oracle 并非所有变量都已绑定的原因.TO_number();动态执行select..into..语句时
    ResultSetMetaData rsmd = rs.getMetaData()是什么意思?
    概率质量函数:怀孕周期的PMF
    Python 正则表达式
    TF-IDF
  • 原文地址:https://www.cnblogs.com/lxj0205/p/9983104.html
Copyright © 2011-2022 走看看