MW211 EXIT

devlog
PHP/SimpleXMLでXML文字列を操作
2017年05月01日
まず、以下のような感じで文字列を作成し、
SimpleXMLElementクラスのコンストラクタに代入する。
┌──────────────────────────────────────┐
│$xmldecl = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';       │
│$xmldata = <<<___XML___                                                     │
│<xml>                                                                       │
│  <data1>                                                                   │
│    <data2>ABC</data2>                                                      │
│  </data1>                                                                  │
│</xml>                                                                      │
│                                                                            │
│___XML___;                                                                  │
│$xml = new SimpleXMLElement($xmldecl . $xmldata);                           │
└──────────────────────────────────────┘
すると、インスタンス「$xml」にXML形式のデータが格納されるので
タグ名を用いたプロパティ名を駆使して、操作する。

まずは、個別に項目の値を参照する方法。
┌──────────────────────────────────────┐
│echo $xml->data1[0]->data2;                                      //→「ABC」│
└──────────────────────────────────────┘
プロパティを参照するだけ。

全ての内容をXML形式でWeb画面に表示する方法。
┌──────────────────────────────────────┐
│echo '<pre>';                                                               │
│echo htmlspecialchars($xml->asXML());                                       │
│echo '</pre>';                                                              │
└──────────────────────────────────────┘
「asXML()」メソッドで全出力。
これに加えて「htmlspecialchars()」でエスケープし「<pre>」タグで囲う。

XML形式として割り切って使用する(他と連動させたりしない)場合には
「header()」と組み合わせて、以下も可。
┌──────────────────────────────────────┐
│header('Content-type:application/xml; charset=UTF-8');                      │
│echo $xml->asXML();                                                         │
└──────────────────────────────────────┘

項目内容を書き替えるには、プロパティに値を代入すればよい。
┌──────────────────────────────────────┐
│$xml->data1[0]->data2 = 'XYZ';                                              │
│echo $xml->data1[0]->data2;                                      //→「XYZ」│
└──────────────────────────────────────┘
分類:PHP