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

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

PHPz
リリース: 2023-04-26 09:30:21
オリジナル
534 人が閲覧しました

Web 開発では、一部のデータを XML 形式で送信および保存する必要がよくあります。XML データを配列に変換することは、実際のビジネスでも非常に一般的な要件です。一般的に使用される Web プログラミング言語として、PHP は XML データを処理するための多くのツールや関数も提供します。この記事では、PHP で XML データを配列に変換する方法を説明します。

  1. SimpleXML の使用

PHP には、XML データを PHP オブジェクトに変換できる SimpleXML というパーサーが用意されています。 PHP では、オブジェクトを配列にキャストすることで、XML データを配列に変換できます。

$xml = <<

<本>

  <name>PHP Programming</name>
  <author>John Smith</author>
  <price>15.00</price>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


<本>

  <name>Web Development</name>
  <author>Jane Doe</author>
  <price>20.00</price>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー



XML;

$data = simplexml_load_string($xml);
$array = json_decode(json_encode($data), TRUE);

print_r($array);
?>

上記のコードは、まず XML ヒアドキュメント (<<

  1. DOM の使用

XML を解析して配列にするもう 1 つの方法は、PHP の DOM 拡張機能を使用することです。 DOM には、XML ファイルをトラバースするための API がいくつかあります。次のコードを使用します:

$xml = <<

  <name>PHP Programming</name>
  <author>John Smith</author>
  <price>15.00</price>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


  <name>Web Development</name>
  <author>Jane Doe</author>
  <price>20.00</price>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー



XML;

$doc = new DOMDocument();
$doc->loadXML($xml);

$books = $ doc->getElementsByTagName("book");
$result = array();

foreach ($books as $book) {
$item = array(

  "name" => $book->getElementsByTagName("name")->item(0)->nodeValue,
  "author" => $book->getElementsByTagName("author")->item(0)->nodeValue,
  "price" => $book->getElementsByTagName("price")->item(0)->nodeValue
ログイン後にコピー
##) #);

array_push($result, $item);
}

print_r($result);

?>

最初に、loadXML() を使用します。メソッド DOMDocument オブジェクトを作成し、getElementsByTagName() メソッドを通じてすべての書籍ノードを取得し、各書籍ノードを走査して、その名前、著者、価格ノードの値を PHP 配列 $result に保存します。

    XMLReader の使用
大きな XML ファイルを処理する場合、DOM のメモリ消費量が多すぎる可能性があるため、XMLReader パーサーを採用できます。頻繁に使用する XML ドキュメントをメモリなしで読み取り、PHP 配列に変換します。

$xml = <<

<本>
  <name>PHP Programming</name>
  <author>John Smith</author>
  <price>15.00</price>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

<本>

  <name>Web Development</name>
  <author>Jane Doe</author>
  <price>20.00</price>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


XML;

$data = array();

$reader = new XMLReader();
$reader->xml($xml);

while ($reader->read() ) {

if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'book') {

  $book = array();
  while ($reader->read()) {
     if ($reader->nodeType == XMLReader::ELEMENT) {
        $name = $reader->name;
        $reader->read();
        $book[$name] = $reader->value;
     } elseif ($reader->nodeType == XMLReader::END_ELEMENT && $reader->name == 'book') {
        array_push($data, $book);
        break;
     }
  }
ログイン後にコピー
}

}

print_r($data);

?>

XMLReader オブジェクトの xml() メソッドを使用して XML データを読み込み、while ループを使用して各ブック ノードを繰り返し読み取り、子ノードの値は、PHP 配列 $data に保存されます。

上記は、3 つの方法を使用して XML データを PHP 配列に変換するための具体的なコードと手順です。 XML データを処理する必要がある場合、さまざまなニーズやパフォーマンス要件に適応するために、さまざまなパーサー ツールの使用を選択できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート