KANTENNA.COM

Solarized

HOME > WEBプログラム覚書 > PHP5 simpleXML 動作テスト part3

PHP5 simpleXML 動作テスト part3

simpleXMLではxPathを利用してノードにアクセスできるようなので試してみるよ。

インスタンス作成

例によって使用XMLファイルはこのサイトのサイトマップ

サンプルコード

PHP
  1.  <?php
  2.  $xml = "/sample/xml/sitemap/sitemap.xml";
  3.  $sitemap = new SimpleXMLElement($xml, null, true);
  4.  ?>

xPathを利用してノードにアクセス

$sitemapのノードにxPathを利用してアクセスするにはxpath(string $path)を利用する。 カレントは/directories/root/web/library/pearとする。

サンプルコード

PHP
  1.  <?php
  2.  $pear = $sitemap->root->web->library->pear;
  3.  echo $pear->getName();
  4.  ?>

実行結果

pear

子要素にアクセス

pear/package/pager にアクセスする。

サンプルコード

PHP
  1.  <?php
  2.  $pager = $pear->xpath("package/pager");
  3.  echo $pager[0]->getName() . "<br />";
  4.  echo $pager[0]["name"] . "<br />"";
  5.  echo $pager[0]["d"];
  6.  ?>

実行結果

pager
PEAR::pager
ページングナビゲーションを提供するPEAR::Pagerの概要

子孫にアクセス

//も利用できる。package以下のfilesを取得。files数分の配列が返る。

サンプルコード

PHP
  1.  <?php
  2.  $package_files = $pear->xpath("package//files");
  3.  
  4.  var_dump(count($package_files));
  5.  
  6.  foreach ($package_files as $values) {
  7.  
  8.   foreach ($values->children() as $value) {
  9.  
  10.   echo $value->getName() . "<br />";
  11.   echo $value["name"] . "<br />";
  12.   echo $value["d"] . "<br />"";
  13.   }
  14.  }
  15.  ?>

実行結果

int(5) index.php
一覧
便利なPEARパッケージの紹介と動作サンプル
index.php
概要
ページングナビゲーションを提供するPEAR::Pagerの概要
sample.php
動作サンプル
PEAR::pagerの動作サンプル
index.php
概要
バリデート機能を提供するPEAR::Validateの概要
email.php
メールアドレスチェック
様々なデータ形式の妥当性をチェックするPEAR::Validate。email()メソッドの紹介
number.php
数値チェック
様々なデータ形式の妥当性をチェックするPEAR::Validate。number()メソッドの紹介
uri.php
URIチェック
様々なデータ形式の妥当性をチェックするPEAR::Validate。uri()メソッドの紹介
index.php
概要
ディレクトリのファイルをパターンで検索したり、ディレクトリマップを作成出来る便利なライブラリPEAR::File_Findの紹介
glob.php
glob()
ディレクトリを走査するPEAR::File_Findのglob()メソッドのテスト
maptree.php
maptree()
ディレクトリを走査するPEAR::File_Findのmaptree()メソッドのテスト
maptreemultiple.php
maptreemultiple()
ディレクトリを走査するPEAR::File_Findのmaptreemultiple()メソッドのテスト
search.php
search()
ディレクトリを走査するPEAR::File_Findのsearch()メソッドのテスト
index.php
概要
アクセス元のOSやブラウザを判定してくれるPEAR::Net_UserAgent_Detect 概要
sample.php
動作サンプル
OSやブラウザの判定を行えるPEAR::Net_UserAgent_Detectの動作サンプル

属性にアクセス

pear/package/validate の属性にアクセスする。

サンプルコード

PHP
  1.  <?php
  2.  $validate_atributes = $pear->xpath("package/validate/@*");
  3.  
  4.  foreach ($validate_atributes as $attribute) {
  5.   foreach ($attribute as $key => $value) {
  6.   echo $key . " : " . $value . "<br />";
  7.   }
  8.  }
  9.  ?>

実行結果

name : PEAR::Validate
d : バリデート機能を提供するPEAR::Validateの概要

親要素にアクセス

pearの親要素であるlibraryにアクセスする。

サンプルコード

PHP
  1.  <?php
  2.  $libraries = $pear->xpath("..");
  3.  
  4.  echo $libraries[0]->getName() . "<br />";
  5.  echo $libraries[0]["name"] . "<br />";
  6.  echo $libraries[0]["d"];
  7.  ?>

実行結果

library
ライブラリ
WEBサイト制作に欠かせない便利なライブラリの紹介

xPathを利用して色々な要素に簡単にアクセスできますが注意点としては

  • xPath全て利用できるわけではない
  • xPathでの指定はめっさ遅いらしい

とのことです。詳しくはPHP での SimpleXML 処理を参照。

トラックバック(4)

2009年1月13日 13:53

PHP5 simpleXML 動作確認 pert2WEBプログラム覚書

simpleXMLを利用してXMLファイルの作成などを簡単におこなう。続きを読む

2009年1月13日 13:54

PHP5 simpleXML 動作テスト pert1WEBプログラム覚書

php5になるとXMLが簡単に扱えるようsimpleXMLが利用できるようなので動作テストをしてみた。続きを読む

2009年4月17日 21:13

SimpleXMLメモWEBプログラム覚書

SimpleXMLでCDATAや名前付きの要素を取得する方法続きを読む

2010年3月16日 04:57

[PHP] スクレイピング 基本WEBプログラム覚書

PHP、tidyとSimpleXMLでスクレイピングの練習。続きを読む

コメント

コメントする
Name
Email Address
URL
TIME LINE
2012
02.08

[Ubuntu11.10]Winows XPユーザーがUbuntuを使ってみて

Windows XPとUbuntuのデュアルブート環境にしてみておもったこと。

2012
02.03

[jQuery]closest()とparents()

今から16年前Netscapeブラウザのソースコードの公開方法の会議の中で、初めてオープンソースという言葉が使われた今日、 みなさんいかがお過ごしでしょうか。

今回の投稿はそれとは関係のないjQueryのparents()とclosest()が 似てたので何が違うのか試した時のメモです。

2012
02.01

[jQuery Mobile]初期化イベントメモ

jQuery Mobileは読み込まれてから

mobileinit -> pagebeforecreate -> pagecreate -> pageinit

の順番でイベントが発生する。

2012
02.01

[WordPress]管理画面のフッタのフィルタとアクション。

時間も時間なので、あまり使用頻度の高くない微妙なネタを。

会員制サイトなどで不特定多数の人にログインさせる場合、フッタのバージョン情報は隠しておきたかったり、 こじゃれたメッセージを表示したいときとか使うアクションとフィルタ。

2012
01.28

[WordPress] ブログの情報を取得する方法とノーキャッシュ疑惑

ブログのget_bloginfo()で取れないデータが必要な場合に使うもの。

2012
01.26

[jQuery Mobile]ダイアログ

jQuery Mobileにおけるダイアログの扱いはウインドウではなくページ。 なので通常のページと同様に扱える。ダイアログウインドウを出す。じゃなくダイアログページに遷移する。的な。

2012
01.25

[Ubuntu11.10]Ubuntuのインストール後の設定

インストール完了後の環境構築。PC起動時いちいちBIOSからブートドライブ選んで ブートするのかと思ってたら起動時にOS選択画面が出てくる。

すばらしいですね。

2012
01.24
2012
01.23

MinGW+Mintty+Git

MinGW+Mintty+Gitをやろうとして失敗に終わった。このエントリーには収穫できるものはありません。