我需要接受XML并根据模式文件对其进行验证。之后我必须根据命令调用一个函数(例如updateContactList)。做这个的最好方式是什么?我担心验证XML(和报告错误),我不知道将数据放入运行函数的最佳方法是什么
-edit-注意:通过验证模式,我需要验证(正则表达式)模式。如果我可以使用XML和模式调用函数并使其返回false + error msg或true
,那将会很棒答案 0 :(得分:7)
我不确定你的正则表达式是什么意思?验证XML文档的最常用方法是XSD。您可以使用DomDocument->schemaValidate
:
$doc = new DOMDocument();
$doc->load($tempFile);
$doc->schemaValidate('schema.xsd');
还有相应的DomDocument->relaxNGValidate
用于验证较少使用的RelaxNG架构。
您可能还想使用error-handler functions for libxml,如果您计划捕获错误并对其执行某些操作,而不仅仅是验证true或false。实质上,在加载和验证文档之前调用libxml_use_internal_errors(true);
,并使用libxml_get_errors
和display_xml_error
来获取错误。