Как проверить XML по схеме (php или perl или, возможно, C ++) - PullRequest
1 голос
/ 05 октября 2009

Мне нужно взять XML и проверить его по файлу схемы. После этого я должен вызвать функцию, основанную на команде (пример updateContactList). Каков наилучший способ сделать это? Я беспокоюсь о проверке XML (и сообщаю об ошибках), и я понятия не имею, как лучше всего поместить данные в функцию для запуска

-edit- ПРИМЕЧАНИЕ. При проверке схемы мне нужно проверить шаблон (регулярное выражение). Было бы здорово, если бы я мог вызвать функцию с XML и схемой и вернуть ее false + error msg или true

1 Ответ

7 голосов
/ 05 октября 2009

Я не уверен, что вы подразумеваете под регулярным выражением? Наиболее распространенный способ проверки XML-документа - XSD . Для этого вы можете использовать DomDocument->schemaValidate:

$doc = new DOMDocument();
$doc->load($tempFile);
$doc->schemaValidate('schema.xsd');

Существует также соответствующая DomDocument->relaxNGValidate для проверки относительно менее используемой RelaxNG схемы.

Вы также можете использовать функции обработчика ошибок для libxml , если вы планируете фиксировать ошибки и что-то с ними делать, а не просто проверять истину или ложь. По сути, позвоните libxml_use_internal_errors(true); перед загрузкой и проверкой документа и используйте libxml_get_errors и display_xml_error для извлечения ошибок.

...