php数组怎么转换为xml的形式

这篇文章将为大家详细讲解有关php数组怎么转换为xml的形式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

创新互联公司-专业网站定制、快速模板网站建设、高性价比通山网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式通山网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖通山地区。费用合理售后完善,10年实体公司更值得信赖。

PHP开发环境搭建工具有哪些

一、phpStudy,是一个新手入门最常用的开发环境。二、WampServer,WampServer也同样的也是和phpStudy一样操作简单对小白比较友好。三、XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包;四、MAMP,MAMP分为两种MAMP和MAMP Pro for Mac。五、宝塔面板,宝塔面板是一款服务器管理软件,支持windows和linux系统。六、UPUPW,UPUPW是目前Windows平台下最具特色的Web服务器PHP套件。

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

1、说明

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

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

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

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

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

XML 是 W3C 的推荐标准。

2、转换实例

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的形式”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


分享名称:php数组怎么转换为xml的形式
标题网址:http://scjbc.cn/article/gehhoe.html

其他资讯