note 127150 added to xmlreader.isvalid
| From: | me at lubu dot ch | 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