ホームページ >バックエンド開発 >PHPの問題 >PHPでXMLを配列に変換する方法

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

PHPz
PHPzオリジナル
2023-04-24 10:52:402721ブラウズ

PHP を使用したプログラミングのプロセスでは、XML ファイルがよく使用されますが、すべての開発者が XML ファイルの構文規則に精通しているわけではないため、処理のために XML ファイルを配列に変換する必要があります。ここでは、PHP を使用して XML ファイルを配列に変換する方法を説明します。

1. SimpleXML 拡張関数を使用する

SimpleXML 拡張関数は、PHP に付属する XML 解析拡張機能であり、XML ファイルをオブジェクトに解析し、そのオブジェクトを配列に変換できます。 。

SimpleXML 拡張関数を使用する手順は次のとおりです:

  1. simplexml_load_file() 関数を使用して XML ファイルをロードします。サンプル コードは次のとおりです:
$xml = simplexml_load_file('example.xml');
  1. SimpleXML オブジェクトを配列に変換するサンプルコードは以下の通りです:
$array = json_decode(json_encode($xml), TRUE);

このうち json_decode() 関数は、JSON 形式の文字列を配列に変換する関数です。 PHP 配列。 json_encode() 関数は、PHP 配列を JSON 形式の文字列にシリアル化します。ここでは、SimpleXML オブジェクトを JSON 形式の文字列にシリアル化し、それを PHP 配列に解析します。

  1. 変換された配列を処理し、ビジネス ロジックを実装します。

2. DOMDocument クラスを使用する

DOMDocument は、PHP に付属する DOM 解析拡張機能であり、XML ファイルをツリー構造に解析し、必要なノードを見つけることができます。対処する。

DOMDocument クラスを使用する手順は次のとおりです:

  1. load() メソッドを使用して XML ファイルをロードします。サンプル コードは次のとおりです:
$dom = new DOMDocument();
$dom->load('example.xml');
  1. ルート ノードを取得します。サンプル コードは次のとおりです。
$root = $dom->documentElement;
  1. ルート ノードの下の各子ノードを走査し、ノードの名前と値を変換します。配列に入れます。

サンプル コードは次のとおりです。

$array = array();
if ($root->hasChildNodes()) {
    $children = $root->childNodes;
    for ($i = 0; $i < $children->length; $i++) {
        $child = $children->item($i);
        $array[$child->nodeName] = $child->nodeValue;
    }
}

上記のコードでは、最初に空の配列を作成し、次にルート ノードの下の各子ノードを走査します。子ノードが空でない場合は、その名前と値を配列に保存します。

  1. 変換された配列を処理し、ビジネス ロジックを実装します。

3. XML パーサー クラスを使用する

XML パーサーは、PHP に付属する XML パーサーです。XML ファイルを解析してイベント ストリームに変換し、XML を解析できます。イベントの種類に応じてファイルをイベント ストリームに変換し、この XML ファイルを処理します。

XML パーサーを使用する手順は次のとおりです。

  1. XML パーサー オブジェクトを作成します。サンプル コードは次のとおりです。
$xml_parser = xml_parser_create();
  1. イベント処理関数を設定します。サンプル コードは次のとおりです。
function startElement($parser, $element_name, $element_attrs) {
    //处理元素开始事件
}

function endElement($parser, $element_name) {
    //处理元素结束事件
}

function charData($parser, $data) {
    //处理文本内容事件
}

xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "charData");

上記のコードでは、3 つの処理関数を定義します。 startElement() は要素の開始イベントを処理するために使用され、 endElement() は要素の開始イベントを処理するために使用されます。要素終了イベントの処理に使用されます。charData() テキスト コンテンツ イベントの処理に使用されます。次に、これら 3 つの処理関数を XML パーサーに登録します。

  1. XML ファイルを解析するサンプル コードは次のとおりです。
$fp = fopen('example.xml', 'r');
while ($data = fread($fp, 4096)) {
    xml_parse($xml_parser, $data, feof($fp));
}

上記のコードでは、まず XML ファイルをバイナリ モードでメモリに読み込み、次にXML パーサーによって解析されたデータ ブロックを段階的に転送します。

  1. 変換された配列を処理し、ビジネス ロジックを実装します。

概要:

上記は XML ファイルを配列に変換する 3 つの方法であり、開発者は実際のニーズに応じて適切な方法を選択できます。 SimpleXML 拡張関数と DOMDocument クラスを使用するプロセスで、PHP は大量のメモリと CPU リソースを占有します。一方、XML Parser クラスを使用すると、メモリと CPU リソースを節約できますが、より多くの処理関数を記述する必要があります。

以上がPHPでXMLを配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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