SimpleXMLは、XMLデータを簡単に操作および取得できるようにするPHP拡張機能です。
SimpleXMLパーサー
SimpleXMLはツリーベースのパーサーです。
SimpleXMLは、XMLドキュメントの構造またはレイアウトを知っている場合に、要素の名前、属性、およびテキスト コンテンツを取得する簡単な方法を提供します。
SimpleXMLは、XMLドキュメントを配列やオブジェクトのコレクションのように繰り返し処理できるデータ構造に変換します。
DOMやExpatパーサーと比較して、SimpleXMLでは要素からテキスト データを読み取るのに必要なコード行数が少なくなります。
インストール
PHP5以降、SimpleXML関数はPHPコアの一部です。これらの機能を使用するためにインストールは必要ありません。
PHP SimpleXML - 文字列から読み取る
PHPsimplexml_load_string()
関数は、文字列からXMLデータを読み取るために使用されます。
次のようなXMLデータを含む変数があるとします。
$myXMLData =
"<?xml version='1.0' encoding='UTF-8'?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>";
以下の例は、simplexml_load_string()
文字列からXMLデータを読み取る関数:
例
<?php
$myXMLData =
"<?xml version='1.0' encoding='UTF-8'?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>";
$xml=simplexml_load_string($myXMLData) or die("Error: Cannot create object");
print_r($xml);
?>
自分で試してみる »
上記のコードの出力は次のようになります。
<div> SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! )</div>
エラー処理のヒント: libxml 機能を使用して、ドキュメントの読み込み時にすべてのXMLエラーを取得し、エラーを反復処理します。次の例では、破損したXML文字列を読み込もうとしています。
例
<?php
libxml_use_internal_errors(true);
$myXMLData =
"<?xml version='1.0' encoding='UTF-8'?>
<document>
<user>John Doe</wronguser>
<email>john@example.com</wrongemail>
</document>";
$xml = simplexml_load_string($myXMLData);
if ($xml === false) {
echo "Failed loading XML: ";
foreach(libxml_get_errors() as $error) {
echo "<br>", $error->message;
}
} else {
print_r($xml);
}
?>
自分で試してみる »
上記のコードの出力は次のようになります。
<div> Failed loading XML:
Opening and ending tag mismatch: user line 3 and wronguser
Opening and ending tag mismatch: email line 4 and wrongemail</div>
PHP SimpleXML - ファイルから読み取る
PHPsimplexml_load_file()
関数は、ファイルからXMLデータを読み取るために使用されます。
「note.xml 」というXMLファイルがあるとします。それは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
以下の例は、simplexml_load_file()
ファイルからXMLデータを読み取る関数:
例
<?php
$xml=simplexml_load_file("note.xml") or die("Error: Cannot create object");
print_r($xml);
?>
自分で試してみる »
上記のコードの出力は次のようになります。
<div> SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! )</div>
ヒント: 次の章では、SimpleXMLを使用してXMLファイルからノード値を取得/取得する方法を示します。
もっと PHP SimpleXML
PHP SimpleXML関数の詳細については、PHP SimpleXMLリファレンス を参照してください。