1-2.PHPによるXML解析


curl関数などを使って得られたXMLファイルはsimplexml関数を使って解析できます。

XMLファイル名をpatinfoget.xmlとすると


<?php

$datafile="patinfoget.xml";

#Simplexml関数でXMLファイルを解析

$xml = simplexml_load_file($datafile);

#社会保険のレコード枠を数える

foreach($xml->record->record->record->array as $data)

  {

  #echo $data->attributes() . ": " . $data->count()  . "<br />";

  }

$HI=$data->count();

#公費のレコード枠を数える

foreach($xml->record->record->record->array[0]->record->array as $data)

  {

  #echo $data->attributes() . ": " . $data->count()  . "<br />";

  }

$PI=$data->count();


#氏名・性別・生年月日などを出力

foreach($xml->record->record->record->string as $data)

  {

  echo  $data->attributes() . ": " . $data . "<br />";

  }

#住所・電話番号などを出力

foreach($xml->record->record->record->record->string as $data)

  {

   echo $data->attributes() . ": " . $data . "<br />";

  }


$a=0;

while($a < $HI+1) {

        echo "<br />";

       #社会保険情報を取得

       foreach($xml->record->record->record->array->record[$a]->string as $data)

       {

              #要素が空白のときは出力しない

              if ($data != ""){

              echo $data->attributes() . ": " .$data."<br />";

              }

       }

              

       $b=0;            

       while($b < $PI+1) {

                     #公費情報を取得

              foreach($xml->record->record->record->array->record[$a]->array->record[$b]->string as $data)

              {

                     #要素が空白のときは出力しない

                     if ($data != ""){

                     echo $data->attributes() . ": " .$data."<br />";

                     }

              }

              $b++;

       }

$a++;

 }

?>


なお

$url = 'http:#user:password@localhost:8000/api01r/diseaseget?class=01'; 

$xml = simplexml_load_file($url);

ともできそうですが、この方法ではfile_get_contents関数を使った時と同じく処理速度が遅いので、

curl関数で一旦XMLファイルを取り込んで、simplexml_load_fileで処理するのが速度が速いようです。


戻る