目次
方法 1: SimpleXML と json_encode を使用する
方法 2: DOMDocument と json_encode を使用する
方法 3: サードパーティのライブラリを使用する
ホームページ バックエンド開発 PHPの問題 PHPでXMLをJSON形式に変換するにはどうすればよいですか? 3つの共有方法

PHPでXMLをJSON形式に変換するにはどうすればよいですか? 3つの共有方法

Mar 22, 2023 am 10:38 AM
php xml json

データを処理するとき、XML 形式を JSON 形式に変換する必要が生じることがよくあります。 PHP には、この操作の実行に役立つ多くの組み込み関数が含まれています。この記事では、XML 形式を JSON 形式に変換するさまざまな方法について説明します。

方法 1: SimpleXML と json_encode を使用する

SimpleXML は、XML データを処理するための PHP の組み込み拡張機能です。 SimpleXML を使用して XML を PHP のオブジェクトに解析し、json_encode を使用してそれを JSON 形式のデータにエンコードできます。

1

2

3

4

$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 形式で出力します。

1

2

3

4

5

{

   "name""John Doe",

   "age""25",

   "city""New York"

}

ログイン後にコピー
ログイン後にコピー

このメソッドはシンプルで使いやすいですが、小さい XML ファイルに対してのみ機能します。大きな XML ファイルの場合、SimpleXML は大量のメモリを消費し、サーバーがクラッシュする可能性があります。

方法 2: DOMDocument と json_encode を使用する

XML 形式を JSON 形式に変換するもう 1 つの方法は、DOMDocument を使用することです。 DOMDocument は、XML データを処理するために PHP に組み込まれているライブラリです。 DOMDocument を使用して XML を DOM オブジェクトに解析し、DOM ツリーを走査して配列に変換し、json_encode を使用して JSON 形式のデータにエンコードできます。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

$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 形式で出力します:

1

2

3

4

5

{

   "name""John Doe",

   "age""25",

   "city""New York"

}

ログイン後にコピー
ログイン後にコピー

DOMDocument とカスタム関数を使用することで、メモリをあまり消費せずに大きな XML ファイルを処理できます。今回は、データを簡単にフィルタリング、並べ替え、変更することもできます。

方法 3: サードパーティのライブラリを使用する

公式に提供されている関数に加えて、役立つ他の PHP プラグインやサードパーティの拡張機能もあります。 XML 形式を JSON 形式に変換します。たとえば、PHP の XmlToJson 拡張機能を使用して、XML を JSON 形式のデータに解析できます。

1

2

3

4

5

6

$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 形式でデータを出力します。

1

2

3

4

5

6

7

{

   "root": {

      "name""John Doe",

      "age""25",

      "city""New York"

   }

}

ログイン後にコピー

XmlToJson 拡張機能は、大量のデータを処理し、データの整合性を維持するための信頼性が高く、安全かつ効率的な方法です。

#結論

どの方法を選択する場合でも、実際の状況に応じて適切な方法を選択する必要があります。小さな XML ファイルのみを扱う場合は、SimpleXML と json_encode、または DOMDocument と json_encode を使用することも良い方法です。ただし、大きな XML ファイルを処理する必要がある場合、最適な方法は、効率的な XML パーサーとカスタム関数を使用して XML を解析し、JSON 形式のデータに変換することです。ニーズが何であっても、PHP でそれらを満たす最適な方法を見つけることができます。

以上がPHPでXMLをJSON形式に変換するにはどうすればよいですか? 3つの共有方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

See all articles