ThIs SiTe Is A TyPo AnD A BuG.
[php]simplexml_load_fileでうまくパース出来ない、なんて事はない。& 正解とお手軽方法
ソーシャルブックマークに追加:
Category :
php
php5にはsimplexml_load_file()なんて便利な関数があるけど、、
Magpie RSS - PHP RSS Parser-を使ってた人からすると若干の癖がある。
たとえば、
http://soccersns.jp/rss/diary.xml
これを
$xml=simplexml_load_file('http://soccersns.jp/rss/diary.xml');
こんな感じで取得すると、
<title>
<link>
<description>
はパースできるけど
<dc:format>
<dc:date>
<dc:source>
<dc:creator>
は$xmlには含まれていない。
で、
simplexml_load_fileは不完全だと騒ぐ。
で、
これをちゃんと取得するには、、
XMLでの:'コロン'は名前空間を表すので、
$dc=$xml->item[0]->children(名前空間定義のURL);
って感じで指定しなければいけない、
(ちなみに名前空間の定義はXMLのヘッダにxmlns:dc=http://purl.org/dc/elements/1.1/こんな感じで書いてある。)
$dc=$xml->item[0]->children('http://purl.org/dc/elements/1.1/');
echo $dc->format;
echo $dc->date;
echo $dc->source;
echo $dc->creater;
とこんな感じで取得するのが正解なのです。
が、
こんなのめんどくせぇから、
こうする↓
-----------------------------------------------------------------------------------
$string = preg_replace('/:/','_',file_get_contents(XMLのURL));
$xml = simplexml_load_string($string);
-----------------------------------------------------------------------------------
ようは名前空間を表す、:'コロン'を違う文字に変えてから
simplexml_load_stringでパース。
ようはパースできればいいわけだから。
Magpie RSS - PHP RSS Parser-を使ってた人からすると若干の癖がある。
たとえば、
http://soccersns.jp/rss/diary.xml
これを
$xml=simplexml_load_file('http://soccersns.jp/rss/diary.xml');
こんな感じで取得すると、
<title>
<link>
<description>
はパースできるけど
<dc:format>
<dc:date>
<dc:source>
<dc:creator>
は$xmlには含まれていない。
で、
simplexml_load_fileは不完全だと騒ぐ。
で、
これをちゃんと取得するには、、
XMLでの:'コロン'は名前空間を表すので、
$dc=$xml->item[0]->children(名前空間定義のURL);
って感じで指定しなければいけない、
(ちなみに名前空間の定義はXMLのヘッダにxmlns:dc=http://purl.org/dc/elements/1.1/こんな感じで書いてある。)
$dc=$xml->item[0]->children('http://purl.org/dc/elements/1.1/');
echo $dc->format;
echo $dc->date;
echo $dc->source;
echo $dc->creater;
とこんな感じで取得するのが正解なのです。
が、
こんなのめんどくせぇから、
こうする↓
-----------------------------------------------------------------------------------
$string = preg_replace('/:/','_',file_get_contents(XMLのURL));
$xml = simplexml_load_string($string);
-----------------------------------------------------------------------------------
ようは名前空間を表す、:'コロン'を違う文字に変えてから
simplexml_load_stringでパース。
ようはパースできればいいわけだから。
この記事にコメントする
最新記事
(10/29)
(06/05)
(05/30)
(03/23)
(10/21)
PR
カテゴリー
最新トラックバック
(10/21)
(08/25)
(01/23)
(10/25)
(10/21)
最新コメント
[10/10 ludlowhudn]
[10/10 garwyntafo]
[10/10 candissgoi]
[10/10 hardynberk]
[09/15 ssk]
公開中のサービス
MAの輪
ブログ内検索
ログール
アクセス解析
このページのQRコード
