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
こちらもおススメ