第11章 XMLのパースと生成
公開日:
:
最終更新日:2014/04/07
PHP 公式資格教科書
XMLとは<要素名>から始まり</要素名>で終わるのが1つの要素となります。
要素の中には複数の子要素を持つことができる為、
ツリー構造(木構造)の複雑なデータ構造も表現する事ができる。
その汎用性の高さから、異なるOSやシステム間でデータを交換する際に使われることが
多くなっている。
SimpleXMLを使った文字列のパース
文字列のXMLをパースするには、simplexml_load_string()関数を利用する。
関数の引数に文字列を指定すると、
SimpleXMLのオブジェクトを作成して返す。
そして、このオブジェクトには、パースしたXMLと同じ構造の
プロパティが設定される。
<meta charset=”utf-8″><pre><?php
// XMLの文字列
$xml_str = <<< END_OF_XML
<channel>
<title>天気予報</title>
<link>http://weather.example.com/</link>
<description>最新の天気予報を紹介しています。</description>
</channel>
END_OF_XML;
// パースする
$xml = simplexml_load_string($xml_str);
// XMLの内容を表示する
echo “件 名 : “.$xml->title.”\n”;
echo “リンク : “.$xml->link.”\n”;
echo “説 明 : “.$xml->description.”\n”;
このように、simple_load_string()関数の戻り値である、SimpleXMLのオブジェクト$xmlに対して
「$xml->title」とか「$xml->link」のような形式でXMLの要素の内容を取り出す事が出来るようになっている。
XMLの複雑な要素へのアクセス
以下は天気予報の要約を配信しているRSSをパースすることを
想定している。
XMLの文字列を、simplexml_load_string()関数を使って
パースするところまでは、前のプログラムと同じ。
<meta charset=”utf-8″><pre><?php
// XMLの文字列
$xml_str = <<< END_OF_XML
<?xml version=”1.0″ encoding=”utf-8″ ?>
<rss version=”2.0″>
<channel>
<title>天気予報</title>
<link>http://weather.example.com/</link>
<description>最新の天気予報を紹介しています。</description>
<item>
<title>3月14日の天気</title>
<link>http://weather.example.com/0314</link>
<description>3月14日 晴れ</description>s
</item>
<item>
<title>3月15日の天気</title>
<link>http://weather.example.com/0315</link>
<description>3月15日 雨</description>s
</item>
</channel>
</rss>
END_OF_XML;
// パースする
$xml = simplexml_load_string($xml_str);
このRSSでは、RSSのバージョンが指定されている。
XMLのルート要素<rss>にあるversion属性を、
配列にあるインデックスのようにアクセスする事が出来る。
echo $xml[“version”]:??? //表示結果 →2.0
また、<channel>要素の下に複数の<item>タグが存在する。
この<item>タグオブジェクトを得るには、
配列の要素番号で何番目が必要なのかを指定する。
echo $xml->channel->item[0].”/n”;?? //3月14日の天気
echo $xml->channel->item[1].”/n”;?? //3月15日の天気
配列番号でアクセスできるという事は、
foreach文などを使って、繰り返し処理もできる。
SimpleXMLでXMLの出力
パースした内容に加え、再度、XMLで書きだすことも可能。
この場合、SimpleXMLのオブジェクトのasXML()メゾットを
呼ぶことでXMLを書きだす事が出来る。
<meta charset=”utf-8″><pre><?php
// XMLの文字列
$xml_str = <<< END_OF_XML
<channel>
<title>天気予報</title>
<link>http://weather.example.com/</link>
<description>最新の天気予報を紹介しています。</description>
</channel>
END_OF_XML;
// パースする
$xml = simplexml_load_string($xml_str);
// 内容を変更する
$xml->title = “お天気情報”;
$xml->link = “http://example.com/tenki“;
// XMLとして出力する
echo $xml->asXML();
スポンサーリンク
関連記事
-
-
第4章 1)配列について
配列について 配列とは複数の要素を持つことのできる値。 各要素はキー(key)と
-
-
$_SERVER変数について
PHPで自ページから自ページへpost,getさせる時、 AタグやFORMタグに$_SERVERを使
-
-
第5章 関数 関数の宣言と呼び出し
関数とは計算や処理をひとまとまりにしたもの。 PHPではあらかじめ多くの関数を提供している。 似
-
-
第2章 テキストについて
テキストと数の操作 文字列の記述方法 echoコマンドでは 2重引用符の文字列では、変数を展開
-
-
第7章 データベース データーベースとは
データーベースが必要な理由 1.効率よくデータを扱う事が出来る。 処理速度が速い。 2.デ
-
-
第6章 Webフォームの作成 2)
$_GETと$_POSTの処理 変数$_GETと$_POSTをなぜ使い分ける必要があるのか。
-
-
第6章 Webフォームの作成 1)
PHPでは、ユーザが送信した値は、自動的にグローバル変数の$_GETあるいは$_POSTに連想配列の
-
-
第4章 2)多次元配列
配列の要素の中に別の配列を代入。 例: <pre><?php $users
-
-
第2章 テキストの操作
文字列と文字列の結合 文字列と文字列の結合にはドット演算子「.」を使用。 数値や数値が格納さ
- PREV
- Facebook認証を使った時の問題点
- NEXT
- ラジコのプレミアム会員になりました。