1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[PHP] XMLを解析する SimpleXMLElement の使い方

Last updated at Posted at 2020-10-23

環境: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形式への変換ができる。




以上。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?