libro
www.tuyano.com
初心者のためのPHPプログラミング入門

XMLデータの利用 (2/3)

作成:2012-08-05 17:36
更新:2012-08-05 17:36

■SimpleXMLElementのデータを取り出す

SimpleXMLElementには、さまざまなメソッド類が用意されています。それらを利用することで、XMLから必要な情報を的確に取り出すことができます。

SimpleXMLElementから必要な情報を取得するもっとも簡単な方法は、そのノードをプロパティとして指定して取り出すことです。
$変数 = $オブジェクト->ノード;
こんな具合ですね。「ノード」というのは、XMLのデータに書かれている1つ1つのタグのことと考えて下さい。これがSimpleXMLElementオブジェクトとして生成されると、それぞれのタグごとにオブジェクトになってまとめられることになります。この個々の要素を示すオブジェクトのことを、ノードと呼んだりするのです。

XMLでは、同じ名前のノードが同じ階層に複数あることもありますが、こうした場合にはそのノードを示すオブジェクトの配列として取得されます。ですから、指定のノードを取り出し、それを繰り返しなどで順に処理していけば、複数のノードを扱えるようになります。

実際の利用例を下のリスト欄にあげておきましょう。ここでは、先ほどのdata.xmlをロードし表示します。このdata.xmlファイルでは、<datas>というタグがルートにあり、その中に<data>というタグでデータが保管されています。このデータには、商品名とバージョン、そして価格といった値が保管されています。

これを読み込むのに、ここでは以下のようにしています。
$xml = new SimpleXMLElement("data.xml",0,true);
data.xmlからSimpleXMLElementを作成します。そして、ここから<data>タグのノードをまとめて取り出します。
$data_arr = $xml->data;
このように、$xml->dataとノード名を指定することでそのノードが取り出せてしまいます。実に簡単ですね。後は繰り返しを使って1つ1つのノードを処理していきます。
foreach ($data_arr as $row) {……略
このようにすれば、ノードオブジェクトの配列から順にオブジェクトを$rowに取り出していきます。後は、この$rowから各要素の値を取り出してテキストにまとめていくだけです。
$data .= "<td>" . $row->name . "</td>";
$data .= "<td>" . $row->version . "</td>";
$data .= "<td>" . $row->price . "</td>";
基本的な使い方がわかれば、XMLの利用は非常に簡単なことがわかるでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

<?php
$data = "";
$xml = new SimpleXMLElement("data.xml",0,true);
$data_arr = $xml->data;
foreach ($data_arr as $row) {
	$data .= "<tr>";
	$data .= "<td>" . $row->name . "</td>";
	$data .= "<td>" . $row->version . "</td>";
	$data .= "<td>" . $row->price . "</td>";
	$data .= "</tr>";
}
?>
<!doctype html>
<html lang="ja"> 
    <head> 
        <meta http-equiv="Content-Type"
            content="text/html; charset=UTF-8" /> 
        <title>sample page</title>
        <style>
        h1 { font-size:14pt;
        	padding:5px;
        	background-color:#AAFFFF; }
        table tr td {
        	padding:5px;
        	background-color:#DDFFCC; }
        </style>
    </head>
    <body>
        <h1>Hello PHP!</h1>
        <table>
        <tr><th>Name</th><th>Version</th><th>Price</th></tr>
        <?php echo $data; ?>
        </table>
    </body>
</html>

※関連コンテンツ

「初心者のためのPHPプログラミング入門」に戻る