[PHP-users 23512]xmlをparseするクラスを作りたい

ura ura @ xmail.plala.or.jp
2004年 10月 29日 (金) 01:26:04 JST


独学勉強中のうらと申します。

XMLのParseクラスを作ろうとしているのですがxml_parse のハンドラ関数の呼び出しが上手くいきません。
どなたかお知恵をお貸し頂けないでしょうか。

こちらの↓の記事を参考にしてclassにせずベタに書いたものは正常に動きます。
http://forum.nifty.com/fhpg/column/prog/20040208a.htm

そこからコンストラクタにパスを与えるとXMLのエレメントを保持するクラスを作ろうとして悩んでいます。
中核部分のみ書き出したソースを下に記します。

ハンドラ関数は元々"startElement"などでしたが、そのままでは実行したときの表示が
	
Warning xml_parse(): Unable to call handler startElement() in c:\〜
	
と、なっていました。
xml_parser_set_option と xml_set_element_handler で指定する3つのハンドラ関数を指定すると今度は
	
Warning xml_parse(): Unable to call handler () in c:\〜

と、いう具合に () というハンドラ関数が呼ばれようとします。
他にまだ何か指定するハンドラ関数があるのでしょうか?
それともclassにする事が無理なのでしょうか。

作業環境
WinXP SP2
PHP4.3.9
Apache1.3.31

宜しくお願いします。
******************************************
<?php       
class XML_Parser {

	//初期化
	var $fileRss = "../rdf.xml";
	var $xml_parser;

	/**
	 * コンストラクタ
	 * 引数で渡されたXMLへのパスをセット
	 */
	function XML_Parser($xml_path) {

		$this->fileRss = $xml_path;
		//初期化及び読み込み
		$this->parse();
	}

	/**
	 * 初期処理
	 * 変数初期化及びXMLパーサ生成
	 * XMLの読み込み
	 */
	function parse() {
		//XMLパーサを作成
		$this->xml_parser = xml_parser_create();
		//大文字変換を行わない
		xml_parser_set_option($this->xml_parser, XML_OPTION_CASE_FOLDING, false);

		//Start およびEndのエレメントを指定する
		xml_set_element_handler($this->xml_parser, "$this->startElement", "$this->endElement");

		//文字データハンドラを設定する
		xml_set_character_data_handler($this->xml_parser, "$this->characters");

		//ファイルのオープン処理
		if (!($fp = fopen($this->fileRss, 'r'))) {
			die("RSSが開けません!");
		}

		//オープンしたファイルを 読み込み解析
		while ($fileRssdat = fread($fp, 8192)) {
			if (!xml_parse($this->xml_parser, $fileRssdat, feof($fp))) {
				return "XML PARSE ERROR";

			}
		}
		//ファイルのクローズ処理
		fclose($fp);
		//作成したXMLパーサを解放する
		xml_parser_free($this->xml_parser);
	}

	//テキストノードの値
	function characters($parser, $text) {
		// 処理省略
	}

	//要素の開始
	function startElement($parser, $name, $attrib) {
		// 処理省略
	}

	//要素の終了
	function endElement($parser, $name) {
		// 処理省略
	}
}
?>

__
ura
ura @ xmail.plala.or.jp


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