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