Я был бы очень признателен за вашу помощь в этом. В принципе, у меня есть веб-страница PHP, где пользователь выбирает название города (по его коду), а затем отправляется скрипту, который находит город в базе данных, получает связанный с ним связанный с ним XML-файл, который содержит его текущий погода, а затем отображает его. Все работает отлично, за исключением случаев, когда пользователь выбирает код, которого не существует. Что же тогда происходит то, что я получаю сообщение:Обработка ошибок парсера XML
Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 1: parser error : Start tag expected, '<' not found in ...
Основная проблема в том, что он останавливает всю нагрузку, поэтому не только пользователю видеть это, но и все остальные страницы, включая HTML и все просто не загружено.
Что бы я хотел, это иметь какой-то чек, который в случае, если файл не найден, имеет неправильную структуру, просто перекликается с некоторым сообщением типа «Ошибка, город не найден» и пропускает остальную часть скрипта, но загружает остальную часть веб-страницы, ее HTML и т. д.
Я нашел некоторые решения в Интернете, но я не смог его успешно реализовать.
код, который загружает фактические XML выглядит следующим образом:
public function __construct($query, $units = 'imperial', $lang = 'en', $appid = ''){
$xml = new SimpleXMLElement(OpenWeatherMap::getRawData($query, $units, $lang, $appid, 'xml'));
$this->city = new _City($xml->city['id'],
$xml->city['name'],
$xml->city->coord['lon'],
$xml->city->coord['lat'],
$xml->city->country);
etc.
В случае город не найден, а не XML, программа получает это:
http://api.openweathermap.org/data/2.5/weather?id=123456
В случае он найден, он получает это:
http://api.openweathermap.org/data/2.5/weather?q=London&mode=xml