Simplexml load file не работает

Я застрял в получении XML-контента с помощью simplexml_load_file, любой идеи, почему он не работает? Это имеет какое-то отношение к источнику ниже.

Для причины, если вы откроете эту ссылку в браузере, это xml. Если вы пытаетесь получить я через php, это JSON. попробуйте этот код

Вы должны использовать:

Есть два небольших (но общих) ошибок с вашим кодом, которые мешают вам быстро узнать, что происходит здесь (и как найти решение).

Прежде всего, вы не выполняете проверку ошибок. simplexml_load_file() вернет FALSE если он не сможет открыть файл.

Это еще не очень информативно, теперь вы можете просто включить публикацию/протоколирование ошибок PHP, чтобы увидеть, какие ошибки создаются:

Предупреждение: simplexml_load_file(): http://datacenter.biathlonresults.com/modules/sportapi/api/CupResults?Cup не найден в [. ]

Предупреждение: simplexml_load_file(): ^ в [. ]

Что уже сигнализирует, что HTTP-запрос к этому URL-адресу не предоставляет XML, а JSON (см. Второе предупреждение).

Это легко проверить, сообщив серверу о принятии XML здесь:

который теперь только работает, сервер теперь предоставляет XML, который может быть правильно проанализирован и создан SimpleXMLElement .

Полный пример кода:

Этот пример кода является более короткой версией ответа на очень похожий вопрос, который охватывает одно и то же основание:

Очередные проблемы всплывают с allow_url_fopen() , сделаю тут заметку.

allow_url_fopen
Данная директива включает поддержку оберток URL (URL wrappers), которые позволяют работать с объектами URL как с обычными файлами. Обертки, доступные по умолчанию, служат для работы с удаленными файлами с использованием ftp или http протокола. Некоторые расширения, например, zlib, могут регистрировать собственные обертки.

1) Сканер безопасности Битрикс рекомендует отключать allow_url_fopen = Off

А вот что не будет работать в PHP при такой рекомендации:

  • simplexml_load_file()
  • file_get_contents()

Т.е не будет работать с удаленными файлами вот так:
file_get_contents(‘http://tuning-soft.ru/index.php’);

Читайте также:  Samsung ml 1520 series драйвер windows 7

А с локальными файлами на сервере все будет нормально:
file_get_contents(‘/home/web/public_html/index.php’);

2) А если вы обращаетесь к сайту по защищенному https протоколу, например:
file_get_contents(‘https://example.com’);

То PHP может выдавать предупреждения типа:
Warning: file_get_contents(): Unable to find the wrapper "https" — did you forget to enable it when you configured PHP?

У меня есть большой XML-файл (60 МБ), который я хочу проанализировать и вставить каждую запись в БД MySQL. Я использую simpleXML, чтобы сделать это и работал как шарм в Xamp, но не на живом размещенном веб-сайте. Я не получаю ошибок, поэтому я не знаю, почему объект $ xml продолжает возвращать false. Это из-за большого количества записей в XML?

Rate this post

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *