note 127150 added to xmlreader.isvalid

From: Date: Tue, 31 May 2022 09:54:47 +0000
Subject: note 127150 added to xmlreader.isvalid
Groups: php.notes 
Request: Send a blank email to php-notes+get-218549@lists.php.net to get a copy of this message
Be aware that $xml->isValid() will return validity only for currently active node, so you have to loop trough the nodes. Here is a example how to validate a entire XML file against a XSD schema: <?php $xmlReader = new \XMLReader(); $xmlReader->open('./example.xml'); $xmlReader->setParserProperty(\XMLReader::VALIDATE, true); $xmlReader->setSchema('./schema.xsd'); \libxml_use_internal_errors(true); $msgs = []; while ($xmlReader->read()) { if (!$xmlReader->isValid()) { $err = \libxml_get_last_error(); if ($err && $err instanceof \libXMLError) { $msgs[] = \trim($err->message) . ' on line ' . $err->line; } } } if ($msgs) { throw new \Exception("XML schema validation errors:\n - " . implode("\n - ", array_unique($msgs))); } ?> ---- Server IP: 45.112.84.4 Probable Submitter: 80.90.12.131 (proxied: 80.254.163.62) ---- Manual Page -- https://php.net/manual/en/xmlreader.isvalid.php Edit -- https://main.php.net/note/edit/127150 Del: integrated -- https://main.php.net/note/delete/127150/integrated Del: useless -- https://main.php.net/note/delete/127150/useless Del: bad code -- https://main.php.net/note/delete/127150/bad+code Del: spam -- https://main.php.net/note/delete/127150/spam Del: non-english -- https://main.php.net/note/delete/127150/non-english Del: in docs -- https://main.php.net/note/delete/127150/in+docs Del: other reasons-- https://main.php.net/note/delete/127150 Reject -- https://main.php.net/note/reject/127150 Search -- https://main.php.net/manage/user-notes.php

« previous php.notes (#218549) next »