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

SimpleXML 単機能高性能XMLライブラリ

PHP 求人 募集 Symfony CakePHP Smarty Ruby on Rails

SimpleXML 概要

PHP5から標準搭載されているライブラリのうち代表的な物。
使い勝手は非常に良く、
XMLを扱う上では無くてはならない物と言える。
PHP5から利用できるので、
PHP4ユーザーはDomXML関数群で我慢しよう。

XMLを使う上では最も重要な要素にXPATHがある。
XPATHは一見XMLのパスのように聞こえるが、
実際はSQLのXML版と思って貰った方が良い。
(XQueryというのもあるが、それはもっと高機能)
これを使いこなすことがXMLを使いこなすことになる。
非常に奥の深い物なのでここでは軽くふれる程度にとどめておく。
xpathを学ぶには以下のサイトが非常に参考になる。
http://www.w3schools.com/xpath/default.asp

SimpleXML パース

例えばRSSをフィードするようなプログラムを考えてみよう。
RSSの代表的なライブラリにMagpieRSSというのがある。
RSSを取り込み解析してくれる優れたライブラリなのだが、
同様のことをSimpleXMLを使ってやってみよう。

サンプル

例えば、このサイトのRSSのすべてのリンクを取得するには。

<?php
  $root = new SimpleXMLElement('http://dozo.matrix.jp/feed.php', null, true );
  $root->registerXPathNamespace('rss', 'http://purl.org/rss/1.0/');
  $links = $root->xpath('//rss:channel/rss:link | //rss:item/rss:link');
  foreach( $links as $link ){
      echo $link."<br />\n";
  }
?>

※registerXPathNamespaceはphp5.2以上

linkタグはchannel, images, item属性にそれぞれ存在する。
MagiepieRSSでは配列を全部ブン回さないと取れないが、
SimpleXMLならXpathの指定だけで済む。

RSSのバージョン、フォーマットによって動作を振り分ける場合は

  $feedType = "";
  switch( strtolower( $root->getName() ) ){
      case "rdf":
          $feedType = "rdf";
          // rss0.8, rss1.0
          break;
      case "rss":
          $feedType = "rss";
          // rss2.0
          break;
      case "feed":
          $feedType = "atom";
          // atom
          break;
      default:
          die("Cannot Feed");
          break;
  }

として後の処理を変更すればいいだろう。

注意事項

simpleXMLのマルチバイトはUTF8のみの為、
その他の文字コードで出力されている場合はあらかじめ変換しておく必要がある。


library/simplexml.txt · 最終更新: 2007/08/26 13:08 by dozo