• []
  • []
  •  
  • del.icio.us 
  •  
  • Yahoo!֥åޡϿ 

SimpleXMLのIteratorパターンクラス

PHP 求人 募集 Symfony CakePHP Smarty Ruby on Rails

SimpleXMLIterator:SimpleXMLのIteratorパターンクラス 概要

コンフィグファイル、各種Web Service(WEBサービス)、
通信プロトコルに至ってXMLが当たり前のように飛び交っている。
しかしPHPerな人は取り残され気味だ。
他のライトウェイト言語(Light Weight Language, Ruby, Pythonなど)に比べて、
PHPのXML対応は遅れを取っている。

PHPでXMLを取り扱おうとすると
(゜Д゜)メンドイ
になってしまうわけだが。
SimpleXMLを使うと非常に簡単にXMLを取り扱うことが出来る。

さらにXMLを展開後のオブジェクト群を取り扱いやすくするのが、
SimpleXMLIterator(SimpleXML イテレータ)だ。

SimpleXMLIterator:SimpleXMLのIteratorパターンクラス 詳細

Amazon Webサービスを利用したと想定して、
その結果をIteratorパターンで処理する。

サンプル

まずはサンプルから

 <?php 
 $xml =<<<EOF
 <?xml version='1.0'?> 
 <OperationRequest>
 <HTTPHeaders>
  <Header Name="UserAgent" Value="Mozilla/5.0"/>
 </HTTPHeaders>
 <RequestId>1YZ06151X1EVCNK1QTYC</RequestId>
 <Arguments>
  <Argument Name="AssociateTag" Value="hoge-22"/>
  <Argument Name="ItemPage" Value="6"/>
  <Argument Name="Keywords" Value="test"/>
  <Argument Name="ResponseGroup" Value="Medium"/>
  <Argument Name="Operation" Value="ItemSearch"/>
  <Argument Name="Service" Value="AWSECommerceService"/>
  <Argument Name="AWSAccessKeyId" Value="hogehoge"/>
  <Argument Name="SearchIndex" Value="Blended"/>
 </Arguments>
 <RequestProcessingTime>0.109647989273071</RequestProcessingTime>
 </OperationRequest>
 EOF;
 
 $sxe = simplexml_load_string($xml, 'SimpleXMLIterator'); 
 
 for ($sxe->rewind(); $sxe->valid(); $sxe->next()) {
    echo "key: ".$sxe->key()."<br />\n";
    echo "value: ".print_r( $sxe->current(), true )."<br />\n";
 }

各種メソッド

メソッド詳細
SimpleXMLIterator::current (mixed)現在のオブジェクトを返す
SimpleXMLIterator::getChildren (mixed)現在の子オブジェクトを返す
SimpleXMLIterator::hasChildren (bool)現在のオブジェクトが子オブジェクトを所有しているかどうかを返す
SimpleXMLIterator::key (string)現在のオブジェクトのキー名を返す
SimpleXMLIterator::next (void)次のオブジェクトに移動する
SimpleXMLIterator::rewind (void)SimpleXMLを初期化する
SimpleXMLIterator::valid (bool)現在のオブジェクトがSimpleXMLIteratorとして有効かどうかを返す

*ここでいう”現在”とは”現在ポインタが指定しているオブジェクト”のこと

これらは特別な引数を必要としない。


spl/simplexml.txt · 最終更新: 2008/02/24 18:02 by dozo