私はXML文字列を読み込み、スキーマに対して検証するための簡単な関数を用意しました。与えられた井戸がXMLを形成すると、それは完全に動作します。PHP XML検証で合格すると致命的な例外が発生する
しかし、私はxml構文自体を酷くすると、phpが致命的なエラーをスローし、スクリプトを強制終了します。私はloadXML関数の戻り値をチェックしています。単純なtrue/falseが必要です。 xmlがダーティであれば、loadXML()は失敗し、単に検証の失敗を返すことができます。私は空のエラーハンドラを設定しようとしましたが、それでもスクリプトを強制終了します。
アイデア?エラーや何かをダウングレードする必要がありますか?
参照用含まれるコード(PHP):
function __maskerrors(){};
function ValidateImageXML($xml_string)
{
/* Parse XML data string into DOM object */
$xdoc = new DomDocument;
/* Calculate schema location */
$schema = dirname(realpath(__FILE__));
$schema.= "/image-xml-schema.xsd";
/* Mask any errors */
set_error_handler('__maskerrors');
/* Parse xml string, check for success */
if($xdoc->loadXML($xml_string))
{
/* Validate xml against schema */
if($xdoc->schemaValidate($schema))
{
/* Valid XML structure & valid against schema, return true */
return true;
}
else
{
/* Valid XML structure, but invalid against schema. Return false */
return false;
}
}
else
{
/* Invalid XML structure, return false */
return false;
}
/* Stop masking errors */
restore_error_handler();
}
致命的なエラーのメッセージは何ですか? – hakre