Проверьте, является ли возвращенный файл XML или нет - PullRequest
3 голосов
/ 09 февраля 2012

Мне нужно проверить возвращаемое значение вывода веб-сайта.В случае правильных данных для входа в систему он возвращает файл XML, а в случае неверных данных для входа в систему он просто возвращает строку с надписью «Вы ввели неверный идентификатор».

Моя проблема в том, что я использовал этот код для проверки,

$ch = curl_init();

            curl_setopt($ch, CURLOPT_URL, $url);

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

            $output = curl_exec($ch);

            curl_close($ch);

            if(simplexml_load_string($output)){
                echo 'Is XML';
             }else{
               echo 'Not XML';
                 }

Проблема заключается в проверке и отображении сообщения, но я получаю эти ошибки

Предупреждение: simplexml_load_string () [function.simplexml-load-string]: Entity: строка 1: ошибка синтаксического анализатора: ожидается начальный тег, '<' не найден в </p>

Предупреждение: simplexml_load_string () [function.simplexml-load-string]:

Предупреждение: simplexml_load_string () [function.simplexml-load-string]: ^ in

Есть ли способ разобраться в этих ошибках.Последний час я безуспешно искал в интернете.

Спасибо

Ответы [ 3 ]

13 голосов
/ 09 февраля 2012

Проверьте, равны ли первые 5 символов <?xml, это должно быть довольно неплохо.

if(substr($output, 0, 5) == "<?xml") {
    echo 'Is XML';
} else {
    echo 'Not XML';
}
9 голосов
/ 09 февраля 2012
$result = simplexml_load_string ($data, 'SimpleXmlElement', LIBXML_NOERROR+LIBXML_ERR_FATAL+LIBXML_ERR_NONE);
if (false == $result) echo 'error';
1 голос
/ 11 февраля 2012

Возможно также, потому что первая строка возвращаемых данных пуста - попробуйте $output = trim($output) перед тем, как проанализировать строку как XML.

...