|
PHPの小技
P4.XMLファイルをHPへ変換SimpleXML
最近、XMLファイルをHPへ変換して、UWSのソフトでブログへの自動投稿を始めた。しかし、いろいろなHPや本で調べながら、掲載されているプログラムをいじりながら、かろうじてXMLをhpに変換していたが、イマイチ変換プログラムを理解していなかった。
でも、茂木健一郎の本にあったが、脳に負荷を与えていると、ある日突然、理解できるようになると書いてあったが、まさにそうであった。
たったこれだけのプログラムで
<?php
//XMLファイルをセット
$xml = simplexml_load_file('http://oshiete1.goo.ne.jp/rss.php?c=904');
//XMLファイルの取り出し
foreach ($xml->channel->item as $item){
// print '<A HREF="' . $item->link . '" TARGET="_blank">■'
. $item->title . '</A><br />';
print $item->description . "<br /><br />\n";
require('cm907.inc'); //ランダム広告の表示
}
?> |
こんな実行結果になる
http://oshiete1.goo.ne.jp/rss.php?c=90のXMLの実行結果
上のXMLのファイルは次のようになっている
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://oshiete1.goo.ne.jp/rss.css"
type="text/css"?>
<rss version="2.0" xmlns:im="http://purl.org/rss/1.0/item-images/">
<channel>
<copyright>(c)Copyright 2004-2008 NTT Resonant Inc. All rights reserved.</copyright>
<pubDate>Sun, 29 Jun 2008 00:02:37 +0900</pubDate>
<lastBuildDate>Sun, 29 Jun 2008 00:02:37 +0900</lastBuildDate>
<docs>http://oshiete.goo.ne.jp/</docs>
<description>教えて!gooへの新着質問を配信します。</description>
<link>http://oshiete.goo.ne.jp/</link>
<title>教えて!goo 新着質問(その他(恋愛・人生相談)/904)</title>
<managingEditor>NTT Resonant Inc. <info@goo.ne.jp></managingEditor>
<webMaster>NTT Resonant Inc. <info@goo.ne.jp></webMaster>
<generator>NTT Resonant Inc. <info@goo.ne.jp></generator>
<language>ja</language>
<category>ひとに聞く</category>
<ttl>15</ttl>
<item>
<title>友達が多い人は</title>
<link>http://oshiete1.goo.ne.jp/qa4136830.html</link>
<description>多いことで楽しいこと、つらいことってどんなことですか?
私は友達が少ないので多い人を見ると楽しそうでうらやましいなと思います。
実際はつらいことってあるのかな?と疑問を感じました。</description>
<category>ライフ/恋愛・人生相談/その他(恋愛・人生相談)(904)</category>
<pubDate>Sat, 28 Jun 2008 23:57:46 +0900</pubDate>
<guid>http://oshiete1.goo.ne.jp/qa4136830.html</guid>
<author>misuto06</author>
<comments>http://oshiete1.goo.ne.jp/qa4136830.html</comments>
</item>
<item>
<title>どうしてウソなんか吐くんでしょうね、遣りきれません</title>
<link>http://oshiete1.goo.ne.jp/qa4136819.html</link>
<description>なんだかウソに対しての認識が甘いような気がします。
ウソも方便は私も流用しますけれど、つい言っちゃったはどうなんですかね?罪悪感はないのでしょうか?</description>
<category>ライフ/恋愛・人生相談/その他(恋愛・人生相談)(904)</category>
<pubDate>Sat, 28 Jun 2008 23:53:36 +0900</pubDate>
<guid>http://oshiete1.goo.ne.jp/qa4136819.html</guid>
<author>pandasibak</author>
<comments>http://oshiete1.goo.ne.jp/qa4136819.html</comments>
</item> |
$xml = simplexml_load_file('http://oshiete1.goo.ne.jp/rss.php?c=904');
この部分は、決まりみたいなもの。XMLのファイルの場所を指定すると、$XMLの中にデータがHPで利用できる形で記録される、ということか。。。
このXMLの構造は
<channel>
<item>
<title>~</title>
<link>~</link>
<description>~</description>
</item>
<item>
</item>
~
</channel>
となっている。
つまり、取り出したい部分は、<item>~</item>の部分
foreach ($xml->channel->item as $item){
このような指定になっている。
いままで、この意味がイマイチわからなかったけど、(今もよくわかっていないが)階層構造で指定しているということはわかったので良しとしよう。
//XMLファイルの取り出し
foreach ($xml->channel->item as $item){
// print '<A HREF="' . $item->link . '" TARGET="_blank">■'
. $item->title . '</A><br />';
print $item->description . "<br /><br />\n";
あとは、title,link,descroiptionを上記のように指定するとデータを取り出すことができるみたいだ。
メニューへ戻る
|