SimpleXML関数
SimpleXML
&reftitle.intro;
SimpleXML拡張モジュールは、
XMLをオブジェクトにとても簡単かつ容易に変換するための機能を
提供します。変換後のオブジェクトでは、
通常のプロパティセレクタや配列反復子を用いて処理を行うことが
可能です。
&reftitle.required;
SimpleXML 拡張モジュールは PHP 5 が必要になります。
&reference.simplexml.configure;
&reftitle.examples;
このリファレンスの多くの例ではXML文字列を必要とします。各例で
この文字列をくり返す代わりに、あるファイルにこの文字列を保存して、
各例で読みこむことにします。この読みこまれるファイルは、以下の例
に関するセクションで使用されます。
もしくは、XMLドキュメントを作成し、
simplexml_load_file により読みこむことも
可能です。
XML文字列を設定するインクルードファイル example.php
PHP: Behind the Parser
Ms. Coder
Onlivia Actora
Mr. Coder
El ActÓr
So, this language. It's like, a programming language. Or is it a
scripting language? All is revealed in this thrilling horror spoof
of a documentary.
7
5
XML;
?>
]]>
SimpleXMLの容易さが最も明確に現われるのは、
簡単なXMLドキュメントから文字列または数字を展開する時です。
<plot> を取得する
movie[0]->plot; // "So this language. It's like..."
?>
]]>
SimpleXMLでユニークでない要素にアクセスする
単一の親要素の子要素としてある要素のインスタンスが複数存在する時、
通常の反復処理を適用することができます。
node, we echo a separate . */
foreach ($xml->movie as $movie) {
echo $movie->plot, '
';
}
?>
]]>
属性を使用する
ここまでは、要素の名前と値を読む方法のみを扱って来ました。
SimpleXMLは要素の属性にアクセスすることも可能です。
要素の属性にアクセスする方法は、配列 の要素に
アクセスするのと全く同じです。
nodes of the first movie.
* Output the rating scale, too. */
foreach ($xml->movie[0]->rating as $rating) {
switch((string) $rating['type']) { // Get attributes as element indices
case 'thumbs':
echo $rating, ' thumbs up';
break;
case 'stars':
echo $rating, ' stars';
break;
}
}
?>
]]>
要素および属性をテキストと比較する
要素または属性を文字列と比較する、もしくは、文字列を引数とする関数に
渡すには、(string) により文字列にキャストする
必要があります。さもないと、PHPはこの要素をオブジェクトとして扱います。
movie->title == 'PHP: Behind the Parser') {
print 'My favorite movie.';
}
htmlentities((string) $xml->movie->title);
?>
]]>
Xpathの使用
SimpleXMLには、Xpathをサポートしています。
<character> 要素を全て見つけるには、
以下のようにします。
xpath('//character') as $character) {
echo $character->name, 'played by ', $character->actor, '
';
}
?>
]]>
'//' はワイルドカードとして動作します。絶対パスを指定するには、
スラッシュを一つだけにします。
値を設定する
SimpleXMLの中のデータは、定数とすることができません。
オブジェクトは、その全ての要素について変更が可能です。
movie[0]->characters->character[0]->name = 'Miss Coder';
echo $xml->asXML();
?>
]]>
上のコードは、元のXMLドキュメントと全く同じXMLドキュメントを新規に
出力しますが、新しいXMLファイルでは、Ms. Coder が Miss Coder
に変更されているところが異なります。
DOMとの相互運用性
PHPは、SimpleXML形式とDOM形式の間でXMLノードを変換する機構を有しています。
この例では、DOM要素をSimpleXMLに変換することができます。
loadXML('blah');
if (!$dom) {
echo 'Error while parsing the document';
exit;
}
$s = simplexml_import_dom($dom);
echo $s->book[0]->title;
?>
]]>
&reference.simplexml.functions;