データを処理するとき、XML 形式を JSON 形式に変換する必要が生じることがよくあります。 PHP には、この操作の実行に役立つ多くの組み込み関数が含まれています。この記事では、XML 形式を JSON 形式に変換するさまざまな方法について説明します。
SimpleXML は、XML データを処理するための PHP の組み込み拡張機能です。 SimpleXML を使用して XML を PHP のオブジェクトに解析し、json_encode を使用してそれを JSON 形式のデータにエンコードできます。
$xml = '<root><name>John Doe</name><age>25</age><city>New York</city></root>'; $simpleXML = simplexml_load_string($xml); $json = json_encode($simpleXML); echo $json;
上記のコードは、次のデータを JSON 形式で出力します。
{ "name": "John Doe", "age": "25", "city": "New York" }
このメソッドはシンプルで使いやすいですが、小さい XML ファイルに対してのみ機能します。大きな XML ファイルの場合、SimpleXML は大量のメモリを消費し、サーバーがクラッシュする可能性があります。
XML 形式を JSON 形式に変換するもう 1 つの方法は、DOMDocument を使用することです。 DOMDocument は、XML データを処理するために PHP に組み込まれているライブラリです。 DOMDocument を使用して XML を DOM オブジェクトに解析し、DOM ツリーを走査して配列に変換し、json_encode を使用して JSON 形式のデータにエンコードできます。
$xml = '<root><name>John Doe</name><age>25</age><city>New York</city></root>'; $dom = new DOMDocument; $dom->loadXML($xml); $json = json_encode(domDocumentToArray($dom)); echo $json; function domDocumentToArray($node) { $output = array(); switch ($node->nodeType) { case XML_CDATA_SECTION_NODE: case XML_TEXT_NODE: $output = trim($node->textContent); break; case XML_ELEMENT_NODE: for ($i = 0, $m = $node->childNodes->length; $i < $m; $i++) { $child = $node->childNodes->item($i); $v = domDocumentToArray($child); if(isset($child->tagName)) { $t = $child->tagName; if(!isset($output[$t])) { $output[$t] = array(); } $output[$t][] = $v; } elseif($v) { $output = (string) $v; } } if($node->attributes->length && !is_array($output)) { $output = array('@content'=>$output); } if(is_array($output)) { if($node->attributes->length) { $a = array(); foreach($node->attributes as $attrName => $attrNode) { $a[$attrName] = (string) $attrNode->value; } $output['@attributes'] = $a; } foreach ($output as $t => $v) { if(is_array($v) && count($v)==1 && $t!='@attributes') { $output[$t] = $v[0]; } } } break; } return $output; }
上記のコードは、次のデータを JSON 形式で出力します:
{ "name": "John Doe", "age": "25", "city": "New York" }
DOMDocument とカスタム関数を使用することで、メモリをあまり消費せずに大きな XML ファイルを処理できます。今回は、データを簡単にフィルタリング、並べ替え、変更することもできます。
公式に提供されている関数に加えて、役立つ他の PHP プラグインやサードパーティの拡張機能もあります。 XML 形式を JSON 形式に変換します。たとえば、PHP の XmlToJson 拡張機能を使用して、XML を JSON 形式のデータに解析できます。
$xml = '<root><name>John Doe</name><age>25</age><city>New York</city></root>'; $parser = xml_parser_create(); xml_parse_into_struct($parser, $xml, $values, $tags); xml_parser_free($parser); $json = json_encode(XmlToJson::toArray($values)); echo $json;
上記のコードは、次の JSON 形式でデータを出力します。
{ "root": { "name": "John Doe", "age": "25", "city": "New York" } }
XmlToJson 拡張機能は、大量のデータを処理し、データの整合性を維持するための信頼性が高く、安全かつ効率的な方法です。
以上がPHPでXMLをJSON形式に変換するにはどうすればよいですか? 3つの共有方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。