[PHP-users 27165] Re: XMLパーサにおけるシングルクォート読み込みについて
okuyama@workgroup
okuyama @ workgroup.jp
2005年 10月 7日 (金) 16:17:24 JST
原因は、別の部分にあるかと思われます。
表示の際に、' (シングルクォート)でくくられている部分に、該当データが
挿入されているものと思われます。
このソース内で対応するのであれば、
「//文字データハンドラを設定する」関数内で、
メタ文字をクォートする処理を追加すればOKではないでしょうか。
. ・ . + : ゜. ‥ ゜. .
‥ ゜. . . ・. ・ . +
/ + ゜. ・ . + :
★ from: Atsuji Okuyama
彡彡ミ
)∂∂b mail: okuyama @ workgroup.jp
( ー 人__ tel: 050-3599-1875
 ̄/)/ | tel: 050-7567-2016
|` ̄ "\ au : 090-3545-9553
> -----Original Message-----
> From: php-users-bounces @ php.gr.jp
> [mailto:php-users-bounces @ php.gr.jp] On Behalf Of Yosuke Uchida
> Sent: Friday, October 07, 2005 3:47 PM
> To: php-users @ php.gr.jp
> Subject: [PHP-users 27164] XMLパーサにおけるシングルクォート読み込みについ
て
>
> 初めまして
> 内田と申します
>
> PHP Ver.4.3.10にてXMLパーサを作成し、
> RDFを読み込む処理を作成しました。
>
> 各項目申し分無く読み込んでいるのですが、
> 以下の現象が起きます。
>
> [読み込み対象] <title>We're Goin Down</title>
> [読み込み後 ] re Goin Down
>
> シングルクォートが引用符として捉えられ、
> 性格にデータが読み込めません。
>
> 半角英字しか扱わない予定なので、
> XMLパーサはUS-ASCIIで作成し、エンコーディング等行っておりません。
>
> 解決法があればご教授頂けますでしょうか。
>
> 以上宜しくお願い致します。
>
> 参考 -----------------------------------
>
> function characters($parser, $text){
> global $tmp;
> //バッファにテキストを保存
> $tmp = $text;
> }
>
> //要素の開始
> function startElement($parser, $name, $attrib){
> global $g_intCount;
> if($name == "item"){
> $g_intCount = $g_intCount+1;
> }
> }
>
> //要素の終了
> function endElement($parser, $name){
> global $tmp,$arrTitle,$g_intCount;
> switch($name){
> case 'title':
> $arrTitle[$g_intCount] = $tmp;
> break;
>
> default :
> break;
> }
> }
>
> //XMLパーサー作成("US-ASCII")
> $xml_parser = xml_parser_create("US-ASCII");
>
> // 大文字変換を行わない
> xml_parser_set_option($xml_parser,
> XML_OPTION_CASE_FOLDING, false);
>
> //start および end 要素のハンドラを設定する
> xml_set_element_handler($xml_parser, "startElement",
> "endElement");
>
> //文字データハンドラを設定する
> xml_set_character_data_handler($xml_parser, "characters");
>
>
> if (!($fp = fopen($file, "r"))) {
> die("XMLファイルを開けません。");
> }
>
> while ($data = fread($fp,8192)) {
>
> //XMLパース処理
> if (!xml_parse($xml_parser,$data, feof($fp))) {
>
> //パースエラー処理
> die(sprintf("XML error: %s at line %d",
> xml_error_string(xml_get_error_code($xml_parser)),
> xml_get_current_line_number($xml_parser)));
>
> }
> }
>
> //XMLパーサの開放
> xml_parser_free($xml_parser);
>
> _______________________________________________
> PHP-users mailing list PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>
>
PHP-users メーリングリストの案内