Обработка ошибок Simplexml PHP

Он работает эффективно, поскольку, поскольку он быстрее, чем sendRedirect, необходимо использовать перенаправление, если нам нужно передать управление в другой домен.

Когда мы вызываем запрос вперед, запрос отправляется другой ресурс на сервере, без уведомления клиента о том, что другой процесс будет обрабатывать запрос. Этот процесс происходит полностью в веб-контейнере. С другой стороны, когда вызывается метод sendRedirect, он заставляет веб-контейнер возвращаться в браузер, указывая, что нужно запрашивать новый URL. Поскольку браузер выдает совершенно новый запрос, любой объект, который хранится в качестве атрибутов запроса до того, как произойдет перенаправление, будет потерян. Этот дополнительный раунд делает перенаправление медленнее, чем вперед.

23
задан hakre 19 June 2014 в 08:58
поделиться

5 ответов

Я нашел хороший пример в документации php .

Таким образом, код:

libxml_use_internal_errors(true);
$sxe = simplexml_load_string("<?xml version='1.0'><broken><xml></broken>");
if (false === $sxe) {
    echo "Failed loading XML\n";
    foreach(libxml_get_errors() as $error) {
        echo "\t", $error->message;
    }
}

И выход, как мы и ожидали:

Не удалось загрузить XML

Blank needed here
parsing XML declaration: '?>' expected
Opening and ending tag mismatch: xml line 1 and broken
Premature end of data in tag broken line 1
19
ответ дан hakre 19 June 2014 в 08:58
поделиться

Я думаю, что это лучший способ

$use_errors = libxml_use_internal_errors(true);
$xml = simplexml_load_file($url);
if (false === $xml) {
  // throw new Exception("Cannot load xml source.\n");
}
libxml_clear_errors();
libxml_use_internal_errors($use_errors);

подробнее: http://php.net/manual/en/function.libxml-use-internal-errors.php

46
ответ дан hakre 19 June 2014 в 08:58
поделиться

Это старый вопрос, но все еще актуален сегодня.

Правильный способ обработки исключений при использовании oop SimpleXMLElment такой же.

libxml_use_internal_errors(TRUE); // this turns off spitting errors on your screen
try {
  $xml = new SimpleXMLElement($xmlStringOfData);
} catch (Exception $e) {
  // Do something with the exception, or ignore it.
}
4
ответ дан Halfstop 19 June 2014 в 08:58
поделиться

В документации сказано, что в случае ошибки simplexml_load_file возвращает FALSE. Итак, вы можете использовать оператор «выключения» (@) в сочетании с условным оператором:

if (@simplexml_load_file($file))
{
    // continue
}
else 
{
    echo 'Error!';
}
-1
ответ дан 29 November 2019 в 00:47
поделиться

if (simplexml_load_file ($ file)! == ложный) { // продолжить} else { echo 'Ошибка!'; }

И Твиттер не работает , может быть?

-1
ответ дан 29 November 2019 в 00:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: