Erros DOM

Durante a análise sintática, documentos com problemas podem retornar possíveis problemas relatados pela libXML como Inphinit\Dom\DomException.

Defina os níveis de gravidade.

FATAL

use Inphinit\Dom\Document; Document::setSeverityLevels(Document::FATAL);

Um documento mal formatado retornará um erro fatal Inphinit\Dom\DomException. Isso também inclui erros de falta de memória (OOM), erros de entrada/saída (I/O), esgotamento de limites de recursos, erros inesperados de outras bibliotecas e erros de argumentos inválidos.

AVISO

use Inphinit\Dom\Document; Document::setSeverityLevels(Document::WARNING);

ERRO

use Inphinit\Dom\Document; Document::setSeverityLevels(Document::ERROR);

Isso gerará erros recuperáveis como um Inphinit\Dom\DomException, por exemplo:

  • Erros de namespace.
  • Erros de validade durante a validação.
  • Determinadas entidades não declaradas.
  • Identificação única e xml:id erros.

Denuncie tudo

Lançar uma exceção para avisos, erros e erros fatais que possam ocorrer durante a análise sintática:

use Inphinit\Dom\Document; Document::setSeverityLevels(Document::ERROR | Document::FATAL | Document::WARNING);

Erro de análise

Documentos com problemas, de acordo com o grau de generalidade definido, gerarão erros caso sejam encontrados problemas no documento. Para documentos locais, a exceção apontará para a linha exata que apresenta o problema, por exemplo:

use Inphinit\Dom\Document; // parse XML $handle = new Document(Document::XML); $handle->load('/foo/bar/sample.xml', true);

sample.xml:

<?xml version="1.0" encoding="UTF-8"?> <contact> <sample>test</sample> <foo:name>Foo bar baz</foo:name> <baz:phone>(000) 0000-xxxx</baz:phone> </contact>

Saída:

Fatal error: Uncaught Inphinit/Dom/DomException: Namespace prefix foo on name is not defined in /foo/bar/sample.xml:4 Stack trace: #0 /home/application/system/vendor/inphinit/framework/src/Inphinit/Dom/Document.php(214): Inphinit/Dom/Document->raise(3) #1 /home/application/system/dev.php(482): Inphinit/Dom/Document->load('/foo/bar/sample.xm...', true) #2 /home/application/system/vendor/inphinit/framework/src/Inphinit/App.php(223): {closure:{closure:/home/application/system/dev.php:358}:478}(Object(Inphinit/Diagnostics/App), NULL) #3 /home/application/index.php(8): Inphinit/App->exec() #4 {main} thrown in /foo/bar/sample.xml on line 4

Se você estiver no modo de desenvolvimento e tiver adicionado $debug->setErrorView('debug.error');, uma tela semelhante será exibida:

Página inicial
Apoie com uma estrela no GitHub