public static function loadString(string $content, $schemaOrCallable = null): DOMDocument
    {
        if (\trim($content) === '') {
            throw new InvalidArgumentException('Content does not contain valid XML, it is empty.');
        }

        $internalErrors  = \libxml_use_internal_errors(true);
        $disableEntities = \libxml_disable_entity_loader();

        \libxml_clear_errors();

        $dom                  = new DOMDocument();
        $dom->validateOnParse = true;

        if (! $dom->loadXML($content, \LIBXML_NONET | (\defined('LIBXML_COMPACT') ? \LIBXML_COMPACT : 0))) {
            \libxml_disable_entity_loader($disableEntities);

            if ($errors = XliffUtils::validateSchema($dom)) {
                throw new InvalidArgumentException(self::getErrorsAsString($errors));
            }
        }

        $dom->normalizeDocument();

        \libxml_use_internal_errors($internalErrors);
        \libxml_disable_entity_loader($disableEntities);

        foreach ($dom->childNodes as $child) {
            if ($child->nodeType === \XML_DOCUMENT_TYPE_NODE) {
                throw new InvalidArgumentException('Document types are not allowed.');
            }
        }

        if ($schemaOrCallable !== null) {
            self::validateXmlDom($dom, $schemaOrCallable);
        }

        \libxml_clear_errors();
        \libxml_use_internal_errors($internalErrors);

        return $dom;
    }
public static function loadString(string $content, $schemaOrCallable = null): DOMDocument
    {
        if (\trim($content) === '') {
            throw new InvalidArgumentException('Content does not contain valid XML, it is empty.');
        }

        $internalErrors  = \libxml_use_internal_errors(true);
        $disableEntities = \libxml_disable_entity_loader();

        \libxml_clear_errors();

        $dom                  = new DOMDocument();
        $dom->validateOnParse = true;

        if (! $dom->loadXML($content, \LIBXML_NONET | (\defined('LIBXML_COMPACT') ? \LIBXML_COMPACT : 0))) {
            \libxml_disable_entity_loader($disableEntities);

            if ($errors = XliffUtils::validateSchema($dom)) {
                throw new InvalidArgumentException(self::getErrorsAsString($errors));
            }
        }

        $dom->normalizeDocument();

        \libxml_use_internal_errors($internalErrors);
        \libxml_disable_entity_loader($disableEntities);

        foreach ($dom->childNodes as $child) {
            if ($child->nodeType === \XML_DOCUMENT_TYPE_NODE) {
                throw new InvalidArgumentException('Document types are not allowed.');
            }
        }

        if ($schemaOrCallable !== null) {
            self::validateXmlDom($dom, $schemaOrCallable);
        }

        \libxml_clear_errors();
        \libxml_use_internal_errors($internalErrors);

        return $dom;
    }
public static function loadString ( string $ content , $ schemaOrCallable = null ) : DOMDocument { if ( \ trim ( $ content ) === '' ) { throw new InvalidArgumentException ( 'Content does not contain valid XML, it is empty.' ) ; } $ internalErrors = \ libxml_use_internal_errors ( true ) ; $ disableEntities = \ libxml_disable_entity_loader ( ) ; \ libxml_clear_errors ( ) ; $ dom = new DOMDocument ( ) ; $ dom -> validateOnParse = true ; if ( ! $ dom -> loadXML ( $ content , \ LIBXML_NONET | ( \ defined ( 'LIBXML_COMPACT' ) ? \ LIBXML_COMPACT : 0 ) ) ) { \ libxml_disable_entity_loader ( $ disableEntities ) ; if ( $ errors = XliffUtils :: validateSchema ( $ dom ) ) { throw new InvalidArgumentException ( self :: getErrorsAsString ( $ errors ) ) ; } } $ dom -> normalizeDocument ( ) ; \ libxml_use_internal_errors ( $ internalErrors ) ; \ libxml_disable_entity_loader ( $ disableEntities ) ; foreach ( $ dom -> childNodes as $ child ) { if ( $ child -> nodeType === \ XML_DOCUMENT_TYPE_NODE ) { throw new InvalidArgumentException ( 'Document types are not allowed.' ) ; } } if ( $ schemaOrCallable !== null ) { self :: validateXmlDom ( $ dom , $ schemaOrCallable ) ; } \ libxml_clear_errors ( ) ; \ libxml_use_internal_errors ( $ internalErrors ) ; return $ dom ; }
Loads an XML string.

@param string               $content          An XML string content
@param null|callable|string $schemaOrCallable An XSD schema file path, a callable, or null to disable validation

@throws \Viserio\Component\Contract\Parser\Exception\InvalidArgumentException When loading of XML file returns error

@return \DOMDocument
Loads an XML string .