PHP语言返回XML数据
小标 2018-07-12 来源 : 阅读 50 评论 0

摘要:本文主要向大家介绍了PHP语言返回XML数据,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

本文主要向大家介绍了PHP语言返回XML数据,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

开发中经常会有用到XML格式数据的时候,那么用PHP怎么来将数组格式的数据用XML格式返回呢?

新建一个类文件,叫ArrayToXml.php

<?php/**

 * 数组转XML类

 * 使用方法:调用类中的parse方法,传入数组和节点名称

 */class ArrayToXML {

    //文档对象

  private static $doc = NULL;

    //版本号

  private static $version = '1.0';

    /**

     * 初始化文档版本及编码

     *

     * @param string $version   版本号

     * @param string $encoding  XML编码

     */

    public static function init($version, $encoding) {

      self::$doc = new DomDocument($version, $encoding);

      self::$doc->formatOutput = true;

    }

      

    /**

     * 转换数组到XML

     * @param array $array      要转换的数组

     * @param string $rootName  节点名称

     * @param string $version   版本号

     * @param string $encoding  XML编码

     * @return string

     */

    public static function parse($array, $rootName = 'root', $version = '1.0', $encoding = 'UTF-8') {

        self::init($version, $encoding);

        //转换

        $node = self::convert($array, $rootName);

        self::$doc->appendChild($node);

        return self::$doc->saveXML();

    }

      

    /**

     * 递归转换

     * @param array $array      数组

     * @param string $nodeName  节点名称

     * @return object (DOMElement)

     */

    private static function convert($array, $nodeName) {

        if (!is_array($array)) return false;

        //创建父节点

        $node = self::createNode($nodeName);

        //循环数组

        foreach ($array as $key => $value) {

            $element = self::createNode($key);

            //如果不是数组,则创建节点的值

            if (!is_array($value)) {

               $element->appendChild(self::createValue($value));

                $node->appendChild($element);

            } else {

                //如果是数组,则递归

                $node->appendChild(self::convert($value, $key, $element));

            }                       

        }

        return $node;

    }

   private static function createNode($name) {

        $node = NULL;

        //如果是字符串,则创建节点

        if (!is_numeric($name)) {

            $node = self::$doc->createElement($name);

        } else {

            //如果是数字,则创建默认item节点

            $node = self::$doc->createElement('item');

        }

        return $node;

    }

      

    /**

     * 创建文本节点

     * @param string || bool || integer $value

     * @return object (DOMText || DOMCDATASection );

     */

    private static function createValue($value) {

        $textNode = NULL;

        //如果是bool型,则转换为字符串

        if (true === $value || false === $value) {

            $textNode = self::$doc->createTextNode($value ? 'true' : 'false');

        } else {

            //如果含有HTML标签,则创建CDATA节点

            if (strpos($value, '<') > -1) {

                $textNode = self::$doc->createCDATASection($value);

            } else {

                $textNode = self::$doc->createTextNode($value);

            }

        }

        return $textNode;

    }

}?>

再新建一个index.php文件:

<?php

  include('ArrayToXMLS.php');

  $data = array(

      'cehi_one' => array(

          'title1' => '测试标题一',

          'content1' => '测试内容一'

      ),

      'ceshi_two' => array(

          'title2' => ' 测试标题二 ',

          'content2' => '测试内容二',

          'link' => 'http://www.cnblogs.com/kekeer'

      ),

      'ceshi_three' => array(

          array(

              'title3' => '测试标题二',

              'content3' => '测试内容二',

              'link' => 'http://www..com/'

          ),

          array(

              'title2' => '测试二',

              'content2' => '测试内容二',

              'link' => 'http://www.cnblogs.com/kekeer'

          )

      )

  );

  $api = new ArrayToXML();

  $rs = $api->parse($data);

  echo $rs;?>

运行index.php,查看源代码的就可以看到效果了。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言PHP频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
X
免费获取海同IT培训资料
验证码手机号,获得海同独家IT培训资料
获取验证码
提交

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号