ネットサービスの開発に役立ちそうな話題を中心にお届けします。
F.Ko-Jiの「一秒後は未来」 > プログラミング > SimpleXMLでCDATAを取得したいときはLIBXML_NOCDATAを使う
2008年07月21日 01:30

SimpleXMLでCDATAを取得したいときはLIBXML_NOCDATAを使う

スポンサード リンク

Yahoo!知恵袋のAPIをさわっていて、レスポンスに含まれるCDATAがSimpleXMLで取得できてないことに気づきました。

APIを叩くために汎用の自前クラスを利用しているのですが、その中で

$res = @simplexml_load_string($xml);
$res = @simplexml_load_file($url);

このように simplexml_load_string と simplexml_load_file を使っていたのですが、これではCDATAを無視してしまうようです。

リファレンスによると第3引数に追加のLibxmlパラメータを指定することができて、そのパラメータの一つである LIBXML_NOCDATA というオプションを指定すると、CDATAをテキストデータとして取得することができるようです。

» PHP: simplexml_load_file - Manual
» PHP: 定義済み定数 - Manual

なので、先のコードは次のように修正してあげました。

$res = @simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
$res = @simplexml_load_file($url, 'SimpleXMLElement', LIBXML_NOCDATA);

ちなみに第2引数は返されるオブジェクトのクラス名で、もしSimpleXMLElementクラスを継承したクラスを自作していればそのクラス名を指定できるらしいです。なので通常は 'SimpleXMLElement' を指定しておけば大丈夫です。

スポンサード リンク

Subscribe with livedoor Reader Add to Google Subscribe with Fastladder My Yahoo!に追加 Bloglinesで閲読登録 はてなRSSに追加 エキサイトリーダーに登録


トラックバック

このエントリーのトラックバックURL:

この一覧は、次のエントリーを参照しています: SimpleXMLでCDATAを取得したいときはLIBXML_NOCDATAを使う:

» PHPのsimplexml_load_file(simplexml_load_string)はCDATAセクションを… from Do I like programming?
PHPのsimplexml_load_file(simplexml_load_string)はCDATAセクションを無視する… そんなの知らねーよ\(^... [詳しくはこちら]

» Simple XML関数でCDATAセクションのテキストが取得できない from tech.ludicmind.net
という場合はオプションにLIBXML_NOCDATAを指定する。 via. Si... [詳しくはこちら]

コメントを投稿

(承認されるまでコメントは表示されません。)

プログラミング

English version

前のエントリー: « マックベーカリーのメロンパンに失望した
次のエントリー: ブログ通信簿を使ってみると »

タイトル:

URL:

リンク用HTMLタグ:

Agile Media Network

AMN Partner Blog

広告掲載について

東京ナイロンガールズ
持っているガジェット
powered by Gadget Party
ブログクラブ

最近のつぶやき
このブログの読者になる

F.Ko-Jiの「一秒後は未来」 - RSSフィード

クマでもわかるこのブログの便利な更新チェック方法

DailyFeed

あわせて読みたいブログパーツ

フィードメーター - F.Ko-Jiの「一秒後は未来」

メンバー by Friend Connect

月別アーカイブ


<< September 2010
SuMoTuWeThFrSa
 1234
567891011
12131415161718
19202122232425
2627282930 
人気エントリー
TopHatenar
携帯からのアクセスは
QRコード
http://mob.fkoji.com/