如何根据模式验证XML(php或perl或可能的C ++)

时间:2009-10-05 16:50:05

标签: php xml validation xsd

我需要接受XML并根据模式文件对其进行验证。之后我必须根据命令调用一个函数(例如updateContactList)。做这个的最好方式是什么?我担心验证XML(和报告错误),我不知道将数据放入运行函数的最佳方法是什么

-edit-注意:通过验证模式,我需要验证(正则表达式)模式。如果我可以使用XML和模式调用函数并使其返回false + error msg或true

,那将会很棒

1 个答案:

答案 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_errorsdisplay_xml_error来获取错误。