[PHP]arrayをXMLに変換する関数

カテゴリ: PHP

PHPでarrayをXMLを調べていたところ、意外と探せない。

PEARのXML/Serializerライブラリを使うのはさすがにレガシーすぎるので、stackoverflowで見つけたSimpleXMLElementクラスを利用したものを使うことにしました。下記Q/Aの回答に提示されていたコードを元にしていますが、コーディング規約がPSR-2準拠でなかったので少し改良しています。
How to convert array to SimpleXML
https://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml

$dom = new \SimpleXMLElement('<?xml version="1.0"?><root></root>');
$this->arrayToXml($slipStatus, $dom);


function arrayToXml(array $data, \SimpleXMLElement &$dom)
{
    foreach ($data as $key => $value) {
        if (is_numeric($key)) {
            $key = 'item';
        }

        if (is_array($value)) {
            $subnode = $dom->addChild($key);
            $this->arrayToXml($value, $subnode);
        } else {
            $dom->addChild($key, htmlspecialchars($value));
        }
    }
}

結果をそのままクライアントに返す場合は、Content-Typeの指定を忘れずに

Content-Type: 'text/xml; charset=UTF-8

Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ
カテゴリ: PHP

コメントを残す

メールアドレスが公開されることはありません。