韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > PHP数组 > php数组如何转换为xml的形式?

php数组如何转换为xml的形式?

头像

小妮浅浅

2021-02-21 15:05:166705浏览 · 0收藏 · 0评论

说到XML很多人对这个语言还是不熟悉的,它表示一种标记语言。在XML语法上,它与HTML类似,但是HTML中的元素是固定的,并且用户可以定制XML标签。对于数组的学习也有一定的积累,那么我们可以把数组转换为XML的形式,在正式开始数组的转换前,可以先对XML进行一些了解。

1、说明

XML 是可扩展标记语言(EXtensible Markup Language)。

XML 是一种很像HTML的标记语言。

XML 的设计宗旨是传输数据,而不是显示数据。

XML 标签没有被预定义。您需要自行定义标签。

XML 被设计为具有自我描述性。

XML 是 W3C 的推荐标准。

2、转换实例

<?php
namespace Library;
/**
 * 最外层的当个元素可以自定义标签,内层单个元素统一标签为$defaultSingleOuter
 */
class XML
{
    private static $version = "1.0";
    private static $encoding = 'utf-8';
    // 最外层
    private static $outer = '';
    // 最外层属性
    private static $outerAttribut = [];
    // 单个元素的外层
    private static $singleOuter = '';
    // 单个元素外层的属性
    private static $singleOuterAttribut = [];
 
    private static $defaultSingleOuter = 'item';
 
    public function A2XML(array $data)
    {
        $xml = new \XMLWriter();
        $this->begin($xml);
 
        // 写数据
        if (is_numeric(current(array_keys($data)))) {
            foreach ($data as $key => $val) {
                $this->singleBegin($xml, true);
                $this->writeElement($xml, $val);
                $this->singleEnd($xml);
            }
        } else {
            $this->writeElement($xml, $data);
        }
 
        return $this->end($xml);
    }
 
    /**
     * 写数据
     *
     * @param \XMLWriter $xml
     * @param $data
     */
    private function writeElement(\XMLWriter &$xml, $data)
    {
        if (!is_array($data)) {
            $xml->writeElement(self::$defaultSingleOuter, $data);
            return;
        }
        foreach ($data as $key => $val) {
            if (is_numeric($key)) {
                is_array($val) && $this->singleBegin($xml);
                $this->writeElement($xml, $val);
                is_array($val) && $this->singleEnd($xml);
                continue;
            }
 
            if (is_array($val)) {
                $xml->startElement($key);
                $this->writeElement($xml, $val);
                $xml->endElement();
                continue;
            }
            $xml->writeElement($key, $val);
        }
    }
 
    /**
     * 开始
     *
     * @param \XMLWriter $xml
     */
    private function begin(\XMLWriter &$xml)
    {
        $xml->openMemory();
        $xml->startDocument(self::$version, self::$encoding);
 
        if (self::$outer) {
            $xml->startElement(self::$outer);
        }
 
        if (self::$outerAttribut) {
            foreach (self::$outerAttribut as $key => $val) {
                $xml->writeAttribute($key, $val);
            }
        }
    }
 
    /**
     * 结束
     *
     * @param \XMLWriter $xml
     * @return string
     */
    private function end(\XMLWriter $xml)
    {
        if (self::$outer) {
            $xml->endElement();
        }
 
        $xml->endDocument();
 
        header("Content-type: text/xml");
        //取得缓冲区里的xml字符串
        return $xml->outputMemory(true);
    }
 
    /**
     * 单个元素的开始
     *
     * @param \XMLWriter $xml
     * @param bool $first
     */
    private function singleBegin(\XMLWriter $xml, $first = false)
    {
        if ($first) {
            $xml->startElement(self::$singleOuter ?: self::$defaultSingleOuter);
 
            if (self::$singleOuterAttribut) {
                foreach (self::$singleOuterAttribut as $key => $val) {
                    $xml->writeAttribute($key, $val);
                }
            }
        } else {
            $xml->startElement(self::$defaultSingleOuter);
        }
    }
 
    /**
     * 单个元素的结束
     *
     * @param \XMLWriter $xml
     */
    private function singleEnd(\XMLWriter $xml)
    {
        $xml->endElement();
    }
 
    public function setVersion($version = 1.0)
    {
        self::$version = $version;
        return $this;
    }
 
    public function setEncoding($encoding = 'utf-8')
    {
        self::$version = $encoding;
        return $this;
    }
 
    public function setOuter($outer = '')
    {
        self::$outer = $outer;
        return $this;
    }
 
    public function setOuterAttribut(array $outerAttribut = [])
    {
        self::$outerAttribut = $outerAttribut;
        return $this;
    }
 
    public function setSingleOuter($singleOuter)
    {
        self::$singleOuter = $singleOuter;
        return $this;
    }
 
    public function setSingleOuterAttribut(array $singleOuterAttribut = [])
    {
        self::$singleOuterAttribut = $singleOuterAttribut;
        return $this;
    }
 
    public function setDefaultSingleOuter($defaultSingleOuter)
    {
        self::$defaultSingleOuter = $defaultSingleOuter;
        return $this;
    }
}

以上就是php数组转换为xml形式的方法,可以说xml语言在可扩展标记的功能方面是非常出色的,我们对于数组的使用也是可以进行这方面的转换更多php学习指路:php数组

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

《熟妇的荡欲》HD中字| 交换朋友的老婆2中字谜给看| 人狗大战5高清正版免费观看| 麦子交换2免费完整版| 可切换老司机模式浏览器| 《一滴都不许漏》何泽城林荫| 秘密中的少女2| 啵啵浏览器| 初三小奶长得怎么样| 亚洲精品一区| 《尼姑庵春梦》| 日亚M码是日本的还是中国的| 《丰满的女邻居》播放| 《出差的日子》中文版| 徐婷被房东揉到高潮的视频| 窝窝影院在线观看免费播放电视剧 | 麻豆| 男女一起免费观看全集高清完整版.. | 平陆县公安局| 老头握住淑蓉双乳| 一路向西在线观看剧情电影| 腿张开我要添到你高潮H漫画软件 猛地一挺腿再开一点就不疼 | 公翁晚上吃我奶头子| 妈妈装睡配合孩子阴阳调和| 性上瘾| 成品网站免费直播有哪些平台推荐 | 人口兽猪马狗第1集| 一路向西在线| 九九在线观看免费高清电视剧| 7W7W77777的中文意思| 久久久久久精品免费观看黑人动漫| 《酒店激战》动漫1-5集免费观..| 坤坤寒入桃子里电视剧免费看 | 妈妈洗澡不把门关紧暗示什么| 《玉蒲团2之艳乳欲仙欲》| 粗大的内捧猛烈进出校花H漫画小| 《女仆教育》动漫第一季 | 双乳被四个男人吃奶H文| 八戒八戒在线看免费观看电视剧 | 狗配女人宝典视频| 边摸边脱吃奶边高潮视频免费