У меня есть сайт, управляемый PHP, который включает XML-канал акций, который удаленно обслуживается из ASP (т.е. URL-адрес канала XML имеет порядок: http://remote.com/client.asp).
Поскольку канал часто недоступен (я имею в виду, что сайт возвращает ошибку ASP), я хотел бы проверить, является ли канал правильно сформированным XML, прежде чем включать его. Моя обычная функция url_exists не помогает, поскольку, конечно, URL-адрес существует даже в случае ошибки.
TIA.
Совершенно верно cletus (спасибо) редактирую сейчас ...






Используйте cURL, чтобы получить результат, и simplexml, чтобы проверить, является ли XML правильно сформированный.
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://remote.com/client.asp");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
if (simplexml_load_string($output)) {
// well-formed XML
} else {
// it isn't
}
Спасибо. Я уже использую что-то очень похожее на это, и именно этот скрипт часто выдает ошибку. Хотя я использую simplexml_load_file, будет ли разница с simplexml_load_string?
У меня проблема с SimpleXML, и это очень странно. По-видимому, simplexml_load_file () из URL-адреса и simplexml_load_string () из cURL-результата URL-адреса могут получить другой результат. Один мог потерпеть неудачу, а другой мог работать ... Я не понимаю, как это произошло. Взглянем на мою функцию cURL сейчас
simplexml_load_string выдает предупреждения при просмотре html ... он не дает сбоев там, где должен
Примечание: будьте осторожны с терминологией. То, что вы описываете, звучит как «правильно сформированный» XML, что означает нечто иное, чем «действительный» XML.