Как проверить XML в PHP

Сниппет

Функция libxml_get_errors возвращает массив с объектами LibXMLError, если есть ошибки в буфере, или пустой массив в противном случае.

1) Через DOMDocument

downloadcopy
<?php
/**
 * @param string $xmlContent A well-formed XML string
 * @param string $version 1.0
 * @param string $encoding utf-8
 * @return bool
 */
function isXMLContentValid($xmlContent, $version = '1.0', $encoding = 'utf-8'){
    if (trim($xmlContent) == '') {
        return false;
    }
    libxml_use_internal_errors(true);
    $doc = new DOMDocument($version, $encoding);
    $doc->loadXML($xmlContent);
    $errors = libxml_get_errors();
    libxml_clear_errors();
    return empty($errors);
}

$xml = '<website><domain>wtools.io</domain><title>Online Web Tools</title></website>';
if(isXMLContentValid($xml)){
    echo "Действительный XML";
} else {
    echo "Недействительный XML";
}

2) Через simplexml_load_string

downloadcopy
<?php
/**
 * @param string $xmlContent A well-formed XML string
 * @return bool
 */
function isXMLContentValid($xmlContent){
    if (trim($xmlContent) == '') {
        return false;
    }
    libxml_use_internal_errors(true);
    $xml = simplexml_load_string($xmlContent);
    if ($xml === false) {
        return false;
    } else {
        return true;
    }
}

$xml = '<website><domain>wtools.io</domain><title>Online Web Tools</title></website>';
if(isXMLContentValid($xml)){
    echo "Действительный XML";
} else {
    echo "Недействительный XML";
}

Если вы хотите проверить XML онлайн, вы можете использовать наш бесплатный инструмент.