Case
Время от времени проверяйте доступность XML-канала Google Merchant.
Подача без DTD, поэтому validate()
не будет работать.
Решение
// disable forwarding those load() errors to PHP
libxml_use_internal_errors(true);
// initiate the DOMDocument and attempt to load the XML file
$dom = new \DOMDocument;
$dom->load($path_to_xml_file);
// check if the file contents are what we're expecting them to be
// `item` here is for Google Merchant, replace with what you expect
$success = $dom->getElementsByTagName('item')->length > 0;
// alternatively, just check if the file was loaded successfully
$success = null !== $dom->actualEncoding;
length
выше содержит количество фактически перечисленных продуктов в файле. Вместо этого вы можете использовать имена тегов.
Logic
Вы можете позвонить getElementsByTagName()
по любым другим именам тегов (item
Я использовал для Google Merchant, ваш случай может отличаться) или прочитать другие свойства на $dom
сам объект. Логика остается той же: вместо проверки наличия ошибок при загрузке файла, я считаю, что на самом деле попытка манипулировать им (или, в частности, проверить, содержит ли он значения, которые вам действительно нужны), была бы более надежной.
Самое важное: в отличие от validate()
, для этого в XML не требуется DTD.