PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPで配列をSimpleXMLに変換する方法

PHPでは、array_walk_recursive() 関数を使うことで、配列を SimpleXML オブジェクト(XMLドキュメント)へ簡単に変換できます。array_walk_recursive() は PHP に標準で組み込まれている関数で、多次元配列のすべての要素を再帰的に処理できるのが特徴です。この関数を使った変換では、配列のキーがXMLの要素名(タグ)に、値がその要素の内容にそれぞれ対応します。

それでは、実際のコード例を見てみましょう。

コード例

<?php
    $array = array (
        'name' => 'alex',
        'empdept' => 'account',
        'address' => array (
            'city' => 'michigan'
        ),
    );
    // ルート要素を持つXMLオブジェクトを作成します
    $xml = new SimpleXMLElement('<root/>');
    array_walk_recursive($array, array ($xml, 'addChild'));
    print $xml->asXML();
?>

出力結果

<?xml version="1.0"?>
<root>
<name>alex</name>
<empdept>account</empdept>
<city>michigan</city>
</root>

処理の流れ

  1. new SimpleXMLElement('<root/>') で、ルート要素「root」を持つXMLオブジェクトを生成します。
  2. array_walk_recursive() が配列の各要素を再帰的にたどり、キーと値のペアごとに addChild メソッドを呼び出して子要素を追加していきます。
  3. $xml->asXML() で、構築されたXMLを文字列として出力します。

なお、ネストした配列(上の例では address の中にある city)は、親子関係を持つ階層構造としてではなく、ルート直下にフラットな要素として追加される点に注意してください。

エラーが発生する場合の対処法

実行時に「PHP Fatal error: Uncaught Error: Class 'SimpleXMLElement' not found」というエラーが表示される場合は、SimpleXML 拡張モジュールがサーバーにインストールされていないことが原因です。php-xmlphp-simplexml パッケージをインストールすれば解決できます。

  1. JavaScriptで配列をセット(Set)に変換する方法|new Set()の使い方を解説

    JavaScriptでは、new Set() コンストラクタを使うことで、配列を簡単にセット(Setオブジェクト)へ変換できます。セットは同じ値を自動的に1つだけ保持する性質を持つため、配列から重複した要素を取り除きたい場合にも非常に便利です。 配列をセットに変換するサンプルコード 以下は、ボタンをクリックすると配列がセットに変換されて表示される、完全なHTMLサンプルです。 <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport co

  2. 【Android】配列をArrayListに変換する方法をサンプルコード付きで解説

    このチュートリアルでは、Androidアプリ開発において配列(Array)をArrayListに変換する方法を、実際のサンプルコードとともにわかりやすく解説します。 配列からArrayListへの変換の基本 Javaでは、Arrays.asList()メソッドを使うことで、配列をリスト形式に変換できます。さらに、その結果をArrayListのコンストラクタに渡すことで、要素の追加や削除が自由に行える本格的なArrayListとして扱えます。 String[] array = new String[]{ANDROID, JSP, JAVA, STRUTS, HADOOP, JSF}; Arra