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

An *_*yee 1 php xml validation xsd

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

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

tro*_*skn 7

我不确定你的正则表达式是什么意思?验证XML文档的最常用方法是通过XSD.你可以使用DomDocument->schemaValidate这个:

$doc = new DOMDocument();
$doc->load($tempFile);
$doc->schemaValidate('schema.xsd');
Run Code Online (Sandbox Code Playgroud)

还有相应的DomDocument->relaxNGValidate用于验证较少使用的RelaxNG模式.

如果您计划捕获错误并对其执行某些操作,而不是仅仅验证true或false,那么您可能还希望使用libxml错误处理函数.本质上,libxml_use_internal_errors(true);在加载和验证文档之前调用,并使用libxml_get_errorsdisplay_xml_error获取错误.