热门IT资讯网

php数组怎么转换为xml形式

发表于:2024-11-23 作者:热门IT资讯网编辑
编辑最后更新 2024年11月23日,本文小编为大家详细介绍"php数组怎么转换为xml形式",内容详细,步骤清晰,细节处理妥当,希望这篇"php数组怎么转换为xml形式"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知

本文小编为大家详细介绍"php数组怎么转换为xml形式",内容详细,步骤清晰,细节处理妥当,希望这篇"php数组怎么转换为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形式"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

0