1<?php
2
3declare(strict_types=1);
4
5namespace JMS\Serializer\Exception;
6
7class XmlErrorException extends RuntimeException
8{
9    /**
10     * @var \LibXMLError
11     */
12    private $xmlError;
13
14    public function __construct(\LibXMLError $error)
15    {
16        switch ($error->level) {
17            case LIBXML_ERR_WARNING:
18                $level = 'WARNING';
19                break;
20
21            case LIBXML_ERR_FATAL:
22                $level = 'FATAL';
23                break;
24
25            case LIBXML_ERR_ERROR:
26                $level = 'ERROR';
27                break;
28
29            default:
30                $level = 'UNKNOWN';
31        }
32
33        parent::__construct(sprintf('[%s] %s in %s (line: %d, column: %d)', $level, $error->message, $error->file, $error->line, $error->column));
34
35        $this->xmlError = $error;
36    }
37
38    public function getXmlError(): \LibXMLError
39    {
40        return $this->xmlError;
41    }
42}
43