!!!ここは とにかく自分が役に立つ、あるいは面白いかも、とか思ったっぽいPHPのコードを適当に書き綴ってゆきます。 他にHSPに関係することであれば別のことも書くかもしれませんが… …って、HSPのサンプルコードのページと同じこと書いてますね。 ここにあるコードも転載・再利用自由です。 基本的には、PHP5で動作するスクリプトです。ただし5.0.0では動作しない場合もあります(忘れてなければ注記してます)。 なお、PHP用の色分けプラグインを導入していない(存在するかの確認すらしてない)ので、ソースが見づらいかもしれません。 !!!ネットワークリソース インターネット経由でデータをやり取りする場合の例とか !!!XML XMLを処理するときの例とか PHP5なので、simpleXMLがメインってかそれしかない。 !!名前空間の存在するXMLをパースする 名前空間の展開にはchildren()が使用できる。 ここでは、Livedoor Weather Hacksの「全国の地点定義表」から、全国の 主要都市名とそのIDを取得する。 参考:http://weather.livedoor.com/weather_hacks/webservice.html 参考:http://oshiete1.goo.ne.jp/qa3494329.html {{code Text,8,1 $rss=simplexml_load_file("http://weather.livedoor.com/forecast/rss/forecastmap.xml"); $ldWeather=$rss->channel->children('ldWeather',TRUE); //prefixを指定して名前空間に入る(5.2.0以降) /* //PHP5.2.0より前の場合は、prefixを直接指定できないので以下のようにする $ns = $rss->getNamespaces(true); $ldWeather=$rss->channel->children($ns['ldWeather']); //若しくは、直接名前空間URIを指定する //本来はこの方法がベストだと思う $ldWeather=$rss->channel->children('http://weather.livedoor.com/ns/rss/2.0'); */ $n=0; foreach($ldWeather->source->children()->area as $area){ //children()がポイント foreach($area->pref as $pref){ foreach($pref->city as $city){ echo "".$pref['title']."->".$city['title']."=".$city['id']."
"; $n++; break; //先頭の1都市(都道府県庁所在地かそれに順ずる都市)のみ取得したらループを出る } } } echo "合計 $n 都市"; }} prefixを指定せず名前空間URIを直接指定したほうがいい気がするが、むしろprefixより名前空間URIが 一意かつ普遍に存在するか心配なのでこのままで。