[PHP-users 30593] SAXを使ってみたい

朧月 oboro @ deneb.freemail.ne.jp
2006年 10月 25日 (水) 16:36:12 JST


こんにちは、朧月です。

GooglmapのポイントのデータをXMLにまとめておき、そこからSAXを使ってデータ
を取り出そうと色々やってみたのですが、うまくいきません。現在問題の究明の
ためにコードを簡略化して単体で動かしてみたのですが、

@xml_parse($xml_parser,$data) or exit("パース中に問題が発生しました。");

のコードにて、exitの方が出力されてしまいます。ダメだったらDOMを考えてま
すが、読むだけならSAXの方が効率良いらしいので、なるべくSAXを使用したいで
す。PHPのコードは以下の通りです。

<?php
	
	//変数宣言
	$current = "";
		
	function startElement($parser,$name,$attrs){
		global $current;
		$current = $name;
		
		if($name == "title"){
			echo "<h3>";
		}
	}
	
	function endElement($parser,$name){

		if($name == "title"){
			echo "</h3><br />";
		}
		
	}
	
	function content($parser,$data){
		//データ抽出
		global $current;
		if($current == "title"){
			echo "hoehoe" . $data;
		}
		
	}
	
	//xmlファイル処理(SAX仕様)
	//xmlパーサを作成
	$xml_parser = xml_parser_create();
	//大文字変換を無効にする
	xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
	
			   xml_set_element_handler($xml_parser,"startElement","endElement");
	
	xml_set_character_data_handler($xml_parser,"content");
	
	//$file = "regist.xml";
	//$data = @file($file) or exit("XMLを開けません。");
	//$data = implode("\n",$data);
	//$data = @readfile("regist.xml") or exit("ファイルが見つかりません");
	//$data = implode("\n",$data);
	
	//ファイルを普通に開く
	$fname = "regist.xml";
	$file = @fopen($fname,"r") or exit('ファイルを開けません');
	while(feof($file) == FALSE){
		$data = fgets($file);
		$data = trim($data);
	}
	
	fclose($file);
		
	@xml_parse($xml_parser,$data) or exit("パース中に問題が発生しました。");
	xml_parser_free($xml_parser);

?>


環境はVineLinux & PHPです。


-- 
朧月
mailto:oboro @ deneb.freemail.ne.jp


PHP-users メーリングリストの案内