phpでxmlをparseするコードを作成していますが、
動きが良く分からないものがあったので質問です。
以下のような、XMLがあります。
・XML
<a>1<2<a>
これを以下のようなPHPでparseします。
・php
function func_char($parser, $data){
print "char: $data\n";
}
$parser = xml_parser_create();
xml_set_character_data_handler($parser , "func_char");
xml_parse($parser, "<a>1<2<a>");
出力が以下のようになります。
・出力結果
char: 1
char: 2
間に"char: <"が出力されるかと思ったのですが、出力されません。
何か心当たりのある方はいらっしゃいますでしょうか?
実行環境
----------------------
OS:CentOS 5.2
Apache 2.2.9
php 5.2.6
libxml2 2.7.2
----------------------
No.1ベストアンサー
- 回答日時:
以下をそのまま貼り付けて実行してみましたが"char: <"も出力されました。
実際に使われているコードですか?
function func_char($parser, $data){
print "char: $data\n";
}
$parser = xml_parser_create();
xml_set_character_data_handler($parser , "func_char");
xml_parse($parser, "<a>1<2<a>");
この回答への補足
ご回答ありがとうございます。
コードは簡略化したものです。
実際にはXMLが違ったりparserにオプションを指定したりしています。
PHPやlibxml2のバージョンを下げたりしてみましたが、
実行結果は同じでした。
No.2
- 回答日時:
ANo.1です。
つまり実際上手くいっていないものとは別のコードということですね。
では、この(質問に書かれている)コードを実行してみた結果はどうですか?
この回答への補足
返事が遅くなってしまい誠に申し訳ありません。
私がこの質問に書いたコードを実行してみると、
"char: <"は出力されません。
他の実行環境(OSやPHPのバージョンが違います)もあるのですが、
そこで実行すると期待通りに"char: <"が出力されます。
ネット等で散々調べたのですが結局原因は分かりませんでした。
とりあえず、CDATAを使って"<"が消える現象を回避しようかと思っています。
<a><![CDATA[1<2]]><a>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# C言語について コマンドラインで >変数 12.00 (char型) と、小数点付きの値を共用体に渡 1 2022/04/22 16:56
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCPDFについて
-
¥マークを出力したいがバック...
-
リダイレクト元のURLの取得方法...
-
json_encode日本語表示/PHP5.2.5
-
image関数でMS Pゴシックを使い...
-
htmlspecialcharsの付けどころ...
-
PHPで五角形、または多角形のグ...
-
ob_end_clean と ob_clean の違...
-
PHPのif文でその処理を途中で抜...
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
別ファイルの変数を呼び出した...
-
form actionで二つ送信先を指定...
-
PHPMailerで大きなファイルが送...
-
fopenでファイルが開かない場合...
-
CFileDialogの最初のディレクト...
-
HYのAM11:00のラップの部分の歌...
-
URLが.PHPってどういう...
-
FTPコマンドでディレクトリごと...
-
3つ以上の論理積は利用可能なの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSV出力にHTMLが入ってしまう
-
PHPSpreadsheetによる書き出し...
-
PHPにおける時間計算、時間足し...
-
PHPで取得したHTML内のdiv要素...
-
TCPDFについて
-
エクスプローラーでフォルダを...
-
¥マークを出力したいがバック...
-
ob_end_clean と ob_clean の違...
-
リダイレクト元のURLの取得方法...
-
PHPで`headers already sent`と...
-
PerlからPHPへ移行したときの注...
-
PHPでデータベースからデータを...
-
phpでの画像表示
-
image関数でMS Pゴシックを使い...
-
smarty foreach 半角スペース
-
webroot以外の画像の表示
-
phpにcssを適応させたい...
-
phpexcelにてsubmitボタンを押...
-
文字列を段落で分ける方法を教...
-
Spreadsheet_Excel_Writerのイ...
おすすめ情報