PHP xml_set_unparsed_entity_decl_handler()関数

定義と使用方法

xml_set_unparsed_entity_decl_handler()関数は、解析できない実体名(NDATA)宣言に遭遇したときに呼び出される関数を定義します。

処理器が成功して構築された場合、この関数はtrueを返します;それ以外の場合はfalseを返します。

文法

xml_set_unparsed_entity_decl_handler(parser,ハンドラ)
パラメータ 説明
parser 必要です。使用するXML解析器を定義します。
ハンドラ 必要です。関数を定義します。

ハンドラ パラメータが定義する関数は6つのパラメータを持たなければなりません:

パラメータ 説明
parser 必要です。XML解析器を呼び出すためのXML解析器を含む変数を定義します。
name 必要です。実体の名前を含む変数を定義します。
base

必要です。解析する実体のシステム識別子(system_id)の基本を含む変数を定義します。

現在、このパラメータは通常空文字列に設定されています。

system_id 必要です。実体のシステム識別子を含む変数を定義します。
public_id 必要です。実体の公共識別子を含む変数を定義します。
notation 必要です。変数を定義し、実体データの種類を示すシンボルを含みます。

説明

ハンドラ パラメータは、オブジェクト参照とメソッド名を含む配列でもあります。

<?php
$parser=xml_parser_create();
function char($parser,$data)
  {
  
  }
function unparsed_ent_handler($parser,$entname,
$base,$sysID,$pubID,$notname)
  {
  print "$entname";
  print "$sysID";
  print "$pubID";
  print "$notname";
  }

xml_set_unparsed_entity_decl_handler($parser,
"unparsed_ent_handler");
$fp=fopen("test.xml","r");
while ($data=fread($fp,4096))
  {
  xml_parse($parser,$data,feof($fp)) or 
  die (sprintf("XML エラー: %s 行 %d", 
  xml_error_string(xml_get_error_code($parser)),
  xml_get_current_line_number($parser)));
  }
xml_parser_free($parser);
?>