Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Парсинг XML за допомогою PHP скрипта

На сьогоднішній день відправлення даних в форматі XML отримала дуже широке поширення. Взяти хоча б RSS стрічки. Переоцінити їх значення дуже складно, але ж по-суті це звичайні XML файли з даними.

Основна перевага цього способу передачі даних в тому, що можна з мінімальними зусиллями написати обробник даних і використовувати їх у своїх додатках. Наприклад, робота практично всіх змішання кольорів (mashup) так чи інакше, пов'язана з використанням цього формату.

У цій статті я постараюся показати, що працювати з форматом XML дійсно не складно, а користь від його використання величезна.

Припустимо у нас є конкретне завдання. Потрібно показувати відомості про погоду на своєму сайті.

Ясно, що наймати людину, яка буде слухати прогнози погоди і оновлювати дані зовсім не цікаво. Тим більше, що існують служби, які надають цю інформацію.

наприклад, gismeteo.ua . Ця служба надає готові інформери і XML файли з даними для кожного міста.

Підключити інформер не складніше ніж звичайний банер, тобто потрібно додати їх HTML код на сторінку. Але використання XML даних дає ряд переваг.

По-перше, ви зможете показати дані в тому вигляді, який більше відповідає дизайну сайту.

По-друге, такі дані можна легко зберегти і показувати історію зміни погоди за якийсь період, порівнювати дані по містах і т.д. Варіантів тут маса.

Тепер розберемо, як отримати і обробити ці дані за допомогою PHP .

Перш за все, потрібно чітко уявляти структуру даних. Для цього заходимо на цю сторінку і читаємо опис.

Тут я приведу тільки його фрагмент.

TOWN інформація про пункт прогнозування:
- index унікальний п'ятизначний код міста
- sname закодовану назву міста
- latitude широта в цілих градусах
- longitude довгота в цілих градусах
FORECAST інформація про термін прогнозування:
- day, month, year дата, на яку складений прогноз в даному блоці
- hour місцевий час, на яку складено прогноз
- tod час доби, для якого складено прогноз: 0 - ніч 1 - ранок, 2 - день, 3 - вечір
- weekday день тижня, 1 - неділя, 2 - понеділок, і т.д.
- predict завчасність прогнозу в годинах
TEMPERATURE температура повітря, в градусах Цельсія

Жирним шрифтом виділені назви XML елементів, а курсивом - назви їх атрибутів.

Скорочений фрагмент XML файлу виглядає так:

<MMWEATHER> <REPORT type = "frc3"> <TOWN index = "33345" sname = "% CA% E8% E5% E2" latitude = "50" longitude = "30"> <FORECAST day = "14" month = "6" year = "2008" hour = "21" tod = "3" predict = "18" weekday = "7"> <PHENOMENA cloudiness = "3" precipitation = "4" rpower = "1" spower = "0 "/> <PRESSURE max =" 739 "min =" 737 "/> <TEMPERATURE max =" 21 "min =" 19 "/> <WIND min =" 2 "max =" 5 "direction =" 7 "/> <RELWET max = "91" min = "86" /> <HEAT min = "19" max = "21" /> </ FORECAST> </ TOWN> </ REPORT> </ MMWEATHER>

Як бачите дані досить легко прочитати навіть візуально.

Переходимо до обробки. Для формату XML існує безліч бібліотек, які дозволяють отримувати дані за допомогою всього декількох рядків коду. Ми використовуємо стандартну бібліотеку PHP .

Принцип її роботи досить простий. Ви створюєте парсер (обробник), передаєте йому дані в форматі XML і встановлюєте функції-обробники. Після цього запускаєте обробку. Парсер переглядає дані і викликає функції-обробники для кожного знайденого елемента (якщо вони встановлені, звичайно).

Тепер подивимося, як може виглядати такий скрипт.

&lt;? Php $ res = ''; function startElement ($ parser, $ name, $ attrs) {global $ res; switch ($ name) {case 'TOWN': $ res. = 'Місто -'; $ Res. = '<Strong>'. Mb_convert_encoding (urldecode ($ attrs [ 'SNAME']), 'UTF-8', 'windows-1251'). '</ Strong> <br />'; $ Res. = 'Широта -'. $ Attrs [ 'LATITUDE']. ' градусів <br /> '; $ Res. = 'Довгота -'. $ Attrs [ 'LONGITUDE']. ' градусів <br /> '; break; case 'FORECAST': $ res. = 'Температура'. $ attrs [ 'DAY']. '.'. $ attrs [ 'MONTH']. '.'. $ Attrs [ 'YEAR']. ' в '. $ attrs [' HOUR '] .'- 00 буде від'; break; case 'TEMPERATURE': $ res. = '<strong>'. $ attrs [ 'MIN']. '° </ strong> до <strong>'. $ Attrs [ 'MAX']. '° </ strong> <br />'; break; }} Function endElement ($ parser, $ name) {} $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, 'http://informer.gismeteo.ua/xml/33345_1.xml'); curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_TIMEOUT, 30); curl_setopt ($ ch, CURLOPT_HEADER, 0); curl_setopt ($ ch, CURLOPT_PROXYPORT, 8080); curl_setopt ($ ch, CURLOPT_PROXY, '192.168.0.1'); $ Data = curl_exec ($ ch); curl_close ($ ch); $ XMLparser = xml_parser_create (); xml_set_element_handler ($ XMLparser, 'startElement', 'endElement'); if (! xml_parse ($ XMLparser, $ data)) {die ( 'Помилка обробки даних'); } Xml_parser_free ($ XMLparser); ?> <! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns = "http://www.w3.org/1999/xhtml"> <head> <meta http-equiv = "Content-Type" content = "text / html; charset = UTF-8" /> <title> Дані від gismeteo </ title> </ head> <body style = "font-family: Verdana, sans-serif"> &lt;? php echo $ res; ?> </ Body> </ html>

Щоб трохи його спростити дані будемо виводити інформацію у вигляді звичайної рядки (змінна $ res).

На початку скрипта ми оголосили дві функції (startElement і endElement). До них ми ще повернемося, а зараз розглянемо отримання даних.

Для цієї мети я використовував бібліотеку cURL (рядки 28-40).

Примітка. Можливо, це і перебір, тому що отримати файл можна за допомогою функції fopen (). Але вона не працює з проксі, і без cURL довелося б використовувати сокети (приклад готового скрипта є в коментарях до цієї статті ).

Загалом, спосіб отримання файлу вибираєте по своєму бажанню, а ми переходимо до обробки.

Для цього за допомогою функції xml_parser_create () створюємо XML парсер (рядок 42) і потім встановлюємо обробники елементів (рядок 43). Оброблювачів у нас два. Перший - startElement буде викликаний, коли парсер знайде відкриває тег. Другий - endElement буде викликаний для кожного закриває тега (цей обробник я привів тільки в якості прикладу, він нічого не робить, і його можна було опустити).

Формування даних здійснює функція startElement. Коли парсер знаходить черговий елемент, він передає їй його назву і масив з атрибутами.

За допомогою оператора switch (рядки 6-23) ми визначаємо, який елемент знайдений і формуємо рядок з даними.

Запуск обробки виконується функцією xml_parse, якій потрібно передати парсер і дані з XML файлу. Ця функція поверне TRUE, якщо обробка пройде без помилок.

Після закінчення роботи з парсером його потрібно видалити за допомогою функції xml_parser_free (рядок 47).

У рядках 48-60 ми формуємо HTML сторінку і виводимо дані про погоду (рядок 57). Результат виконання скрипта показаний на скріншоті.

Як бачите, працювати з парсером не складно, головне правильно написати обробники.

Успіхів!

Lt;?
Php echo $ res; ?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    Подготовка к ЕГЭ по математике
    Статьи Опубликовано: 05.10.2017 Подготовка к ЕГЭ по МАТЕМАТИКЕ. 1 часть. Эффективный курс подготовки. Вы находитесь на сайте www.ege-ok.ru - Подготовка к ЕГЭ по математике. Меня зовут Инна Владимировна

    Куда поступить с обществознанием, русским и математикой
    Статьи Опубликовано: 06.10.2017 Сдача ЕГЭ. Куда поступать? Обществознание считается одним из самых популярных предметов, которые выпускники сдают на ЕГЭ. Ввиду высокого рейтинга дисциплины Рособрнадзор

    Сайт Майер Елены - ЕГЭ по математике
    Планируется проведение двух отдельных экзаменов – базового и профильного. Кому сдавать базовый ЕГЭ по математике? Базовый ЕГЭ организуется для выпускников, изучающих математику для общего развития

    ГДЗ решебник по математике 4 класс
    Извините, тут пока ничего нет ((( Решебник по математике 4 класс (Истомина Н.Б.) – не просто возможность быстро выполнить домашнее задание для учащегося, но и способ разобраться в труднорешаемых задачах.

    ГДЗ по математике 1 класс Самсонова самостоятельные работы
    Решебник по математике за 1 класс автора Самсоновой Л.Ю. 2012 года издания. Данное пособие предлагает готовые решения на разнообразные упражнения, направленные на активизацию всего учебного процесса. Здесь

    Для этой работы нужна математика
    Слотов: 956 Рулеток: 7 Лицензия: Pragmatic Play, Microgaming, ELK, Yggdrasil, Habanero, Amatic, Isoftbet, Netent, Rival, Igrosoft, Quickspin. Игры: Автоматы, Покер, Рулетки. Всего 963 Отдача: 98% Бонус

    Веселые задачи по математике 2 класс
    Во время занятий для того, чтобы немного переключить внимание школьников, но при этом не уйти от предмета, можно давать шутливые задачи на сообразительность. Буду пополнять коллекцию таких задач. Дополнительная

    Функция экспонента в Excel
    Одной из самых известных показательных функций в математике является экспонента. Она представляет собой число Эйлера, возведенное в указанную степень. В Экселе существует отдельный оператор, позволяющий

    ЕГЭ по математике 2018
    ЕГЭ по математике, наравне с русским языком , – обязательный экзамен для сдачи выпускниками 11-х классов. По статистике он самый сложный. Мы предлагаем ознакомиться с общей информацией об экзамене и

    Секреты эффективной и быстрой подготовки ко второй части ОГЭ по математике.
    Уважаемые девятиклассники, настоящие или будущие! Часто от вас приходится слышать следующие вопросы. Легко ли подготовиться к заданиям второй части ОГЭ по математике? Сколько для этого понадобится


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: