simplexml を使用して atom データを処理します。多くのブログでは atom を使用してデータを出力しますが、atom は名前空間を使用するため、名前付き要素とローカル名を要求するときに名前空間のユニフォーム リソース識別子 (URI) を指定する必要があります。もう 1 つの点は、simplexml の xpath メソッドでは使用できないことです。この XML ツリーを直接クエリします。
PHP バージョン 5.1 以降、SimpleXML は名前空間ドキュメントに対して XPath クエリを直接使用できるようになりました。通常どおり、検索対象のドキュメントがデフォルトの名前空間を使用している場合でも、XPath の場所のパスには名前空間の接頭辞を使用する必要があります。 registerXPathNamespace() 関数は、プレフィックスを後続のクエリで使用される名前空間 URL に関連付けます。
以下は、xpath を使用して Atom ドキュメントのタイトル要素をクエリする例です:
PLAIN TEXT
コード:
$atom = simplexml_load_file('http://www.ooso.net/index.php/feed/atom');
$atom->registerXPathNamespace('atom','http://www.w3.org/2005/Atom');
$titles = $atom->xpath('//atom:title');
foreach($titles として $title)
echo"<h2>". $title ."</h2>";
simplexml を使用して RSS データを処理する
Wordpress は RSS2 データ ソースを出力できます。また、dc などのいくつかの異なる名前空間もあります。 simplexml を使用して rss2 を解析する例:
プレーンテキスト
PHP:
$ns=配列(
'コンテンツ'=>'http://purl.org/rss/1.0/modules/content/',
'wfw'=>'http://wellformedweb.org/CommentAPI/',
'dc'=>'http://purl.org/dc/elements/1.1/'
);
$articles=array();
// ステップ 1: フィードを取得する
$blogUrl='http://www.ooso.net/index.php/feed/rss2';
$xml= simplexml_load_url($blogUrl);
// ステップ 2: チャンネルのメタデータを取得する
$チャンネル=配列();
$channel['title'] =$xml->チャンネル->タイトル;
$channel['link'] =$xml->channel->link;
$channel['description']=$xml->channel->description;
$channel['pubDate'] =$xml->pubDate;
$channel['timestamp'] =strtotime($xml->pubDate);
$channel['generator'] =$xml->generator;
$channel['言語'] =$xml->言語;
// ステップ 3: 記事を取得する
foreach($xml->channel->itemas$item){
$article=array();
$article['チャンネル']=$ブログ;
$article['title']=$item->タイトル;
$article['link']=$item->リンク;
$article['comments']=$item->コメント;
$article['pubDate']=$item->pubDate;
$article['timestamp']=strtotime($item->pubDate);
$article['説明']=(文字列)トリム($アイテム->説明);
$article['isPermaLink']=$item->guid['isPermaLink'];
// 名前空間に保持されているデータを取得します
$content=$item->children($ns['content']);
$dc =$item->children($ns['dc']);
$wfw =$item->children($ns['wfw']);
$article['作成者']=(文字列)$dc->作成者;
foreach($dc->subjectas$subject)
$article['件名'][]=(文字列)$件名;
$article['content']=(string)trim($content->encoded);
$article['commentRss']=$wfw->commentRss;
// この記事をリストに追加します
$articles[$article['タイムスタンプ']]=$article;
}
この例では、children メソッドを使用して名前空間内のデータを取得します:
PLAIN TEXT
PHP:
$dc =$item->children($ns['dc']);