環境:PHP Version 7.4.9
##XML文字列の読込
$xmlString = <<<EOM
<hoge>
<moge></moge>
</hoge>
EOM;
$xml = simplexml_load_string($xmlString);
simplexml_load_string()
でXML文字列を読み込める。
パラメータにはXML文字列を指定する。
##XMLファイルの読込
$xml = simplexml_load_file($xmlFilePath);
simplexml_load_file()
でXMLファイルを読み込める。
パラメータにはXMLファイルのパスを指定する。
##子ノードへのアクセス
$xmlString = <<<EOM
<hoge>
<moge></moge>
</hoge>
EOM;
$xml = simplexml_load_string($xmlString);
$child = $xml->moge;
アロー演算子
でアクセスできる。
##プロパティへのアクセス
$xmlString = <<<EOM
<hoge PropA="1" PropB="2">
</hoge>
EOM;
$xml = simplexml_load_string($xmlString);
$propA = (string) $xml->attributes()->PropA;
$propB = (string) $xml->attributes()->PropB;
attributes()
で属性一覧を取得したあと、アロー演算子でアクセスする。
また、そのままでは値として扱いにくいので string
へのキャストも併せて行う。
##ノード名の取得
$xmlString = <<<EOM
<hoge>
</hoge>
EOM;
$xml = simplexml_load_string($xmlString);
$name = $xml->getName();
getName()
で名前を取得できる。
今回の例なら「hoge」が取得できる。
##全ての子ノードを取得してループ
$xmlString = <<<EOM
<hoge>
<moge></moge>
<moge></moge>
<moge></moge>
<sage></sage>
<sage></sage>
</hoge>
EOM;
$xml = simplexml_load_string($xmlString);
$children = $xml->children();
foreach ($children as $val) {
// 何らかの処理
}
children()
で全ての子ノードを取得できる。
##特定の子ノードを取得してループ
$xmlString = <<<EOM
<hoge>
<moge></moge>
<moge></moge>
<moge></moge>
<sage></sage>
<sage></sage>
</hoge>
EOM;
$xml = simplexml_load_string($xmlString);
foreach ($xml->moge as $val) {
// mogeのみに何らかの処理
}
アロー演算子
を用いて特定の子ノードに対してのみループを行える。
##JSONへの変換
$xmlString = <<<EOM
<hoge>
<moge></moge>
<moge></moge>
<moge></moge>
<sage></sage>
<sage></sage>
</hoge>
EOM;
$xml = simplexml_load_string($xmlString);
$json = json_encode($xml);
foreach ($json as $val) {
// 何らかの処理
}
json_encode()
でJSON形式への変換ができる。
以上。