インターネット技術の継続的な発展に伴い、データ処理はインターネット アプリケーション開発に不可欠な部分となっています。 XML と JSON は、最も一般的に使用される 2 つのデータ交換形式にもなりました。ただし、実際のアプリケーション開発プロセス中に、PHP はデフォルトで XML 形式の解析をサポートしているが、JSON 形式のサポートは比較的限定されていることがわかりました。そこで今回は、PHPを使ってXML形式のデータをJSON形式のデータに変換する関数を記述する方法を紹介します。
1. 要件の概要
実際のアプリケーション開発プロセスでは、データの共有や交換などを実現するために、XML形式のデータをJSON形式のデータに変換する必要があります。具体的には、元の XML データを解析して PHP 連想配列に変換し、さらにその配列を JSON 形式のデータに変換してクライアントに出力する必要があります。
2. 解決策
上記の要件を達成するには、次の 3 つの手順を実装する必要があります:
1. XML データを解析する
使用PHP の組み込み関数 simplexml_load_string() は、XML 形式のデータを PHP オブジェクトに変換できます。この関数の構文は次のとおりです。
mixed simplexml_load_string ( string $data [, string $class_name = "SimpleXMLElement" [, int $options = 0 [, string $ns = "" [, bool $is_prefix = false ]]]] )
このうち、$data パラメータは解析する必要がある XML 文字列を表し、戻り値は解析されたオブジェクトです。 XML データを解析するときは、データの正確性を確認する必要があるため、simplexml_load_string() 関数を check_xml() 関数にカプセル化して、XML データが正当であるかどうかを検証できます。
function check_xml($xml_str) { $obj = @simplexml_load_string($xml_str); if ($obj === false) { return false; } return true; }
2. XML データを PHP 配列に変換する
XML 形式のデータを解析した後、それを PHP 配列に変換する必要があります。オブジェクトを配列に変換するには、PHP の objectToArray() 関数を使用できます。
function objectToArray($object) { $arr = is_object($object) ? get_object_vars($object) : $object; if (is_array($arr)) { return array_map(__FUNCTION__, $arr); } else { return $arr; } }
前の check_xml() 関数と組み合わせると、convert_xml_to_array() 関数は次のようにカプセル化できます:
function convert_xml_to_array($xml_str) { $obj = @simplexml_load_string($xml_str); if ($obj === false) { return false; } $arr = objectToArray($obj); return $arr; }
3. PHP 配列を JSON 形式のデータに変換します
最後のステップは、PHP 配列を JSON 形式のデータに変換することです。 PHP では、json_encode() 関数を使用して、PHP 配列を JSON 形式のデータに簡単に変換できます。構文は次のとおりです。
string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )
$value パラメータは、JSON 形式のデータに変換する必要がある PHP 配列を表し、戻り値は JSON 形式の文字列です。カプセル化を容易にするために、convert_array_to_json() 関数を次のように定義できます:
function convert_array_to_json($arr) { $json = json_encode($arr, JSON_UNESCAPED_UNICODE); return $json; }
3. 完全なコード
要約すると、上記の 3 つのステップを完全な関数 Convert_xml_to_json (
function convert_xml_to_json($xml_str) { $arr = convert_xml_to_array($xml_str); if ($arr === false) { return false; } $json = convert_array_to_json($arr); return $json; } function check_xml($xml_str) { $obj = @simplexml_load_string($xml_str); if ($obj === false) { return false; } return true; } function convert_xml_to_array($xml_str) { $obj = @simplexml_load_string($xml_str); if ($obj === false) { return false; } $arr = objectToArray($obj); return $arr; } function convert_array_to_json($arr) { $json = json_encode($arr, JSON_UNESCAPED_UNICODE); return $json; } function objectToArray($object) { $arr = is_object($object) ? get_object_vars($object) : $object; if (is_array($arr)) { return array_map(__FUNCTION__, $arr); } else { return $arr; } }
4. 使用例
使用例は次のとおりです。
$xml_str = <<<XML <?xml version="1.0" encoding="UTF-8"?> <xml> <name>张三</name> <age>20</age> <gender>男</gender> <education> <degree>学士</degree> <school>清华大学</school> </education> <education> <degree>硕士</degree> <school>北京大学</school> </education> </xml> XML; if (check_xml($xml_str)) { $json = convert_xml_to_json($xml_str); echo "JSON: {$json}"; } else { echo "XML数据不合法"; }
実行結果は次のとおりです。
JSON: {"name":"u5f20u4e09","age":"20","gender":"u7537","education":[{"degree":"u5b66u58eb","school":"u6e05u534eu5927u5b66"},{"degree":"u7855u58eb","school":"u5317u4eacu5927u5b66"}]}
5. まとめ
この記事では、PHP を使用して XML 形式のデータを JSON 形式のデータに変換する関数を記述する方法を紹介します。 simplexml_load_string() を使用して XML データを解析し、objectToArray() を使用して PHP オブジェクトを PHP 配列に変換し、json_encode() を使用して PHP 配列を JSON 形式のデータに変換することで、データ形式の変換を迅速かつ簡単に実装でき、実用的なアプリケーションを開発できます。プログラムのスケーラビリティと使いやすさを向上させるために適用されます。
以上がPHP アプリケーション: 関数を使用して XML を JSON 形式に変換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。