Authentication




Cancel OK
B!コメントする  2012-07-09 23:36:00 by old

XMLのパース

PHP5からsimplexmlloadfileというのが使えるようになってXMLがあれこれ出来るようになった。
RSSを色々と自動で整形できるので備忘兼ねて載せてみる。

各要素とitem数での取り出し

  $rssurl = "http://rss.weather.yahoo.co.jp/rss/days/13.xml";
$targetrss = simplexmlloadfile($rssurl);

$take
out = 5;
$output = "";
echo $targetrss->channel->item->title;
for ($i=0; $i < $take
out; $i++){
echo "<li>";
echo "<a href=\"";
echo $targetrss->channel->item->$i->link;
echo "\">";
echo $target
rss->channel->item->$i->title;
echo "</a>\n";
echo $targetrss->channel->item->$i->description;
echo "</li>";
}


各要素をすべて取り出し

$rss = simplexmlloadfile("http://b.hatena.ne.jp/hotentry?mode=rss");
foreach ($rss->item as $item) {
//$dc = $item->children('http://purl.org/dc/elements/1.1/');
$link = $item->link;
$title = $item->title;
$date = $item->children;
$desc =$item->description;
echo "<li><a href=\"$link\" title=\"$title\">$title</a>$date<p>$desc</p></li>\n";
}


各要素をすべて取り出し2

$src = filegetcontents('http://event.yahoo.co.jp/list/rss/index.xml');
$xml = simplexml
loadstring($src, "SimpleXMLElement", LIBXMLNOCDATA);

foreach($xml->xpath('/rss/channel/item') as $item){
echo (string)$item->title . "<br />\n";
echo (string)$item->link . "<br />\n";
}


XMLの形式によってうまく取り出せない場合があるが、上記のいずれかで取出しが可能(なはず)
取り出し2についてはitem内にcdataが含まれている場合にうまく取り出せないことがあるので引数にLIBXML_NOCDATAをつけることで取得が可能となる。


PHP  

  • コメント
  • コメントはまだありません