[PHP-users 27164] XMLパーサにおけるシングルクォート読み込みについて

Yosuke Uchida whatsup @ nifty.com
2005年 10月 7日 (金) 15:47:06 JST


初めまして
内田と申します

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 メーリングリストの案内