
XMLデータを取得するプログラムをPHP5で製作しています。
以下、コーディング
-----------------------------------------------------------
$contents = file_get_contents($restURL);
$parser = xml_parser_create('UTF-8');
xml_parse_into_struct($parser,$contents,$values);
xml_parser_free($parser);
-----------------------------------------------------------
file_get_contentsでXMLデータの取得した時点では、例えば
<img><![CDATA[<hogehoge>]]></img>
というふうにCDATAが格納されていることは確認できています。
しかし、xml_parse_into_structで配列構造体にXMLデータを格納すると、
[0] => Array
(
[tag] => IMG
[type] => complete
[level] => 4
[value] =>
)
という感じに、"value"の中の値が空になってしまいます。
xml_parse_into_structで"CDATA"が消えずに配列構造体される方法、
または、xml_parse_into_struct以外で"CDATA"が消えずに配列構造体に
設定される手法はありますでしょうか。
No.1ベストアンサー
- 回答日時:
いや、(XMLの)認識のされかたとしては合ってる筈だよ。
ただ、その文字列を残したいというなら「XMLとしての規則」を守って「エスケープ」するなりしなきゃならないよ
具体的には不等号を実態参照化だね
そうじゃない場合は
2段変換しかないね。
1度テキストとして取り込んでcdataを何かしらに(プログラム上で一定の規則を持つなにかしらの文字列に)置換し、それをxmlとしてパース
取り出したいのはCDATAの中身なので、CDATAを削除し、
マークアップ文字を実態参照化した上でパースすると、
うまく取り出すことができました。
とてもよいヒントをありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列を回すとき、最後の要素だ...
-
PHPのカッコ[ ]の使い方について
-
漢字のソートについて
-
fgetsで取り込んだ文字をexplod...
-
$_SESSIONに二次元配列を使える...
-
連想配列のprint_rやvar_dump出...
-
配列をmb_ereg_replaceで一気に...
-
PHP 多次元配列変数のデータ受...
-
PHP掲示板で新着順に表示させた...
-
Objective-C
-
タグの中身だけを取り出す正規
-
CSVファイルの最終行のデー...
-
verilogで、配列の一部をタスク...
-
fgetsを使ってcsvからcsvに
-
バイナリファイルの内容を、そ...
-
文字列の文字一文字ずつを解析...
-
Perlで重複行を削除したい
-
PHPでこのコード自体に意味は無...
-
Smartyでインクリメント
-
プルダウンメニューにDBの内容...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
String だと「 ByRef引数の型が...
-
$_SESSIONに二次元配列を使える...
-
配列をループでたくさん宣言し...
-
ネストが深い時のforeachはどう...
-
配列を回すとき、最後の要素だ...
-
file_existsでファイル名の部分...
-
PHPにてクラスを配列にすること...
-
foreachのなかで次のキーを参照...
-
postgresql関数をつかったレコ...
-
【Smarty】foreach関数やsectio...
-
漢字のソートについて
-
チェックボックス複数選択 mys...
-
Smartyについて
-
PHP掲示板で新着順に表示させた...
-
PHP 多次元配列変数のデータ受...
-
チェックボックスが複数選択で...
-
PHPのカッコ[ ]の使い方について
-
sortableで並べ替えてDBに保...
-
【PHP】配列内のある値以上をカ...
-
SQL文の実行結果を変数で受けて...
おすすめ情報