SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
XML в крупных размерах
Михаил Крайнюк
Михаил Крайнюк
Drupal senior developer
Мой опыт в Drupal разработке
●  Разработка
●  Управление проектами
●  Drupal аудит
●  Консультация
●  Локализация Drupal
●  Разработка Drupal модулей
XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ord>
<status>new</status>
<regNumber>123</regNumber>
<date>2017-05-09T03:00:00+03:00</date>
<type>article</type>
…
<attachments name="test.txt">0KFKOAM287F98GS87D
SDFS02E9+F09-ASDFO2W</attachments>
</ord>
Feeds
Feeds
XML
This XML is… Simple!
SimpleXML
$up_file = file_get_contents('php://input');
$ref = new SimpleXMLElement($up_file);
$result = $ref->xpath('/ord/regNumber');
$string = (string) $result[0];
SimpleXML
$string = (string) $result[0];
$file_new = file_save_data(base64_decode(trim($string)),
$path, TRUE);
$node->field_files[LANGUAGE_NONE][$id] = array(
'fid' => $file_new->fid,
'display' => 1,
'description' => '',
);
Happy
Oops
SimpleXML
SimpleXML
XML stream
XMLReader
$reader = new XMLReader();
$reader->open('php://input', NULL, LIBXML_PARSEHUGE);
while($reader->read()) {
if ($reader->nodeType != XMLReader::ELEMENT) {
continue;
}
$tag_name = $reader->localName;
switch ($tag_name) {
...
}
}
XMLReader
// Read file content.
while($reader->read()) {
...
case 'attachments':
$reader->read();
if ($reader->nodeType == XMLReader::TEXT) {
$file_content = trim($reader->value);
}
...
}
XML
XML
// Prepare node blank for data import.
$node = new stdClass();
$node->type = 'article';
$node->language = language_default('language');
node_object_prepare($node);
XML
$node_original = node_load($doc_id);
// Mark the new node as the existing node. Don't move fields.
$node->nid = $node_original->nid;
$node->vid = $node_original->vid;
$node->data = $node_original->data;
$node->language = $node_original->language;
$node->created = $node_original->created;
Выводы
●  XML сложна – Feeds
(гибкость, интерфейс, время, features)
●  XML проста и без файлов – SimpleXML
(просто, удобно, застревает)
●  Есть файлы – XMLReader
(импорт XML по 5 ГБ)
Михаил Крайнюк
Drupal senior developer
kraynuk.m@i20.biz
При поддержке:
Организаторы:
Спасибо!

Weitere ähnliche Inhalte

Ähnlich wie XML в крупных размерах - Михаил Крайнюк, DrupalJedi

Как мы документируем программные интерфейсы. YaC 2014
Как мы документируем программные интерфейсы. YaC 2014Как мы документируем программные интерфейсы. YaC 2014
Как мы документируем программные интерфейсы. YaC 2014Yandex
 
Как выглядит современный фронтенд
Как выглядит современный фронтендКак выглядит современный фронтенд
Как выглядит современный фронтендTimophy Chaptykov
 
всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта  всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта Olga Pirozhenko
 
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...ZFConf Conference
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXMLSlach
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf Conference
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс СерверPVasili
 
React со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингTimophy Chaptykov
 
Web весна 2013 лекция 8
Web весна 2013 лекция 8Web весна 2013 лекция 8
Web весна 2013 лекция 8Technopark
 
Haskell
HaskellHaskell
HaskellDevDay
 
Haskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell languageHaskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell languageAlexander Granin
 
"Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)"
"Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)""Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)"
"Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)"Artjoker
 
CatalogLoader 2014 Belarus Minsk DNUG
CatalogLoader 2014 Belarus Minsk DNUGCatalogLoader 2014 Belarus Minsk DNUG
CatalogLoader 2014 Belarus Minsk DNUGNikolai Kekish
 
Быстро о быстром
Быстро о быстромБыстро о быстром
Быстро о быстромRoman Dvornov
 
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеAlexander Byndyu
 
Symfony2. На чем можно сэкономить время при разработке?
Symfony2. На чем можно сэкономить время при разработке?Symfony2. На чем можно сэкономить время при разработке?
Symfony2. На чем можно сэкономить время при разработке?Stepan Tanasiychuk
 
Поиск? Sphinx!
Поиск? Sphinx!Поиск? Sphinx!
Поиск? Sphinx!Roman Zaiev
 
Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?Eugene Zharkov
 

Ähnlich wie XML в крупных размерах - Михаил Крайнюк, DrupalJedi (20)

Как мы документируем программные интерфейсы. YaC 2014
Как мы документируем программные интерфейсы. YaC 2014Как мы документируем программные интерфейсы. YaC 2014
Как мы документируем программные интерфейсы. YaC 2014
 
Как выглядит современный фронтенд
Как выглядит современный фронтендКак выглядит современный фронтенд
Как выглядит современный фронтенд
 
всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта  всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта
 
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXML
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and Doctrine
 
Drupal Vs Other
Drupal Vs OtherDrupal Vs Other
Drupal Vs Other
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс Сервер
 
React со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендеринг
 
XML Schema
XML SchemaXML Schema
XML Schema
 
Web весна 2013 лекция 8
Web весна 2013 лекция 8Web весна 2013 лекция 8
Web весна 2013 лекция 8
 
Haskell
HaskellHaskell
Haskell
 
Haskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell languageHaskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell language
 
"Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)"
"Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)""Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)"
"Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)"
 
CatalogLoader 2014 Belarus Minsk DNUG
CatalogLoader 2014 Belarus Minsk DNUGCatalogLoader 2014 Belarus Minsk DNUG
CatalogLoader 2014 Belarus Minsk DNUG
 
Быстро о быстром
Быстро о быстромБыстро о быстром
Быстро о быстром
 
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
 
Symfony2. На чем можно сэкономить время при разработке?
Symfony2. На чем можно сэкономить время при разработке?Symfony2. На чем можно сэкономить время при разработке?
Symfony2. На чем можно сэкономить время при разработке?
 
Поиск? Sphinx!
Поиск? Sphinx!Поиск? Sphinx!
Поиск? Sphinx!
 
Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?
 

Mehr von DrupalSib

SSO авторизация - Татьяна Киселева, DrupalJedi
SSO авторизация - Татьяна Киселева, DrupalJediSSO авторизация - Татьяна Киселева, DrupalJedi
SSO авторизация - Татьяна Киселева, DrupalJediDrupalSib
 
BigPipe: ускоряем загрузку страниц - Давид Пашаев, DrupalJedi
BigPipe: ускоряем загрузку страниц - Давид Пашаев, DrupalJediBigPipe: ускоряем загрузку страниц - Давид Пашаев, DrupalJedi
BigPipe: ускоряем загрузку страниц - Давид Пашаев, DrupalJediDrupalSib
 
Drupal в школе - Борис Шрайнер
Drupal в школе - Борис ШрайнерDrupal в школе - Борис Шрайнер
Drupal в школе - Борис ШрайнерDrupalSib
 
Евгений Юдкин - Коммуникационные инструменты в отделе продаж на примере интег...
Евгений Юдкин - Коммуникационные инструменты в отделе продаж на примере интег...Евгений Юдкин - Коммуникационные инструменты в отделе продаж на примере интег...
Евгений Юдкин - Коммуникационные инструменты в отделе продаж на примере интег...DrupalSib
 
D8 - Serialize, Normalize - Михаил Крайнюк, DrupalJedi
D8 - Serialize, Normalize - Михаил Крайнюк, DrupalJediD8 - Serialize, Normalize - Михаил Крайнюк, DrupalJedi
D8 - Serialize, Normalize - Михаил Крайнюк, DrupalJediDrupalSib
 
Drupal - создание инсталляционных профайлов - Иван Абраменко, CimpleO
Drupal - создание инсталляционных профайлов - Иван Абраменко, CimpleODrupal - создание инсталляционных профайлов - Иван Абраменко, CimpleO
Drupal - создание инсталляционных профайлов - Иван Абраменко, CimpleODrupalSib
 
Вадим Валуев - Искусство ИТ
Вадим Валуев - Искусство ИТВадим Валуев - Искусство ИТ
Вадим Валуев - Искусство ИТDrupalSib
 
Андрей Юртаев - Mastering Views
Андрей Юртаев - Mastering ViewsАндрей Юртаев - Mastering Views
Андрей Юртаев - Mastering ViewsDrupalSib
 
Migrate drupal 6 to drupal 8. Абраменко Иван
Migrate drupal 6 to drupal 8.  Абраменко ИванMigrate drupal 6 to drupal 8.  Абраменко Иван
Migrate drupal 6 to drupal 8. Абраменко ИванDrupalSib
 
Entity возрождение легенды. Исай Руслан
Entity возрождение легенды. Исай РусланEntity возрождение легенды. Исай Руслан
Entity возрождение легенды. Исай РусланDrupalSib
 
возводим динамическую таблицу, No views, no problem. Крайнюк Михаил
возводим динамическую таблицу, No views, no problem. Крайнюк Михаилвозводим динамическую таблицу, No views, no problem. Крайнюк Михаил
возводим динамическую таблицу, No views, no problem. Крайнюк МихаилDrupalSib
 
Реализация “гибких” списков Жамбалова Намжилма
Реализация “гибких” списков Жамбалова Намжилма Реализация “гибких” списков Жамбалова Намжилма
Реализация “гибких” списков Жамбалова Намжилма DrupalSib
 
Петр Селфин. Шок! Drupal 8 против SEO?! Без регистрации и SMS скачать бесплатно
Петр Селфин. Шок! Drupal 8 против SEO?! Без регистрации и SMS скачать бесплатноПетр Селфин. Шок! Drupal 8 против SEO?! Без регистрации и SMS скачать бесплатно
Петр Селфин. Шок! Drupal 8 против SEO?! Без регистрации и SMS скачать бесплатноDrupalSib
 
Сергей Синица. Разработка интернет-магазинов на Drupal
Сергей Синица. Разработка интернет-магазинов на DrupalСергей Синица. Разработка интернет-магазинов на Drupal
Сергей Синица. Разработка интернет-магазинов на DrupalDrupalSib
 
Eugene Ilyin. Why Drupal is cool?
Eugene Ilyin. Why Drupal is cool?Eugene Ilyin. Why Drupal is cool?
Eugene Ilyin. Why Drupal is cool?DrupalSib
 
Ivan Kotlyar. PostgreSQL in web applications
Ivan Kotlyar. PostgreSQL in web applicationsIvan Kotlyar. PostgreSQL in web applications
Ivan Kotlyar. PostgreSQL in web applicationsDrupalSib
 
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.DrupalSib
 
Anton Shloma. Drupal as an integration platform
Anton Shloma. Drupal as an integration platformAnton Shloma. Drupal as an integration platform
Anton Shloma. Drupal as an integration platformDrupalSib
 
Руслан Исай - Проповедуем Drupal разработку
Руслан Исай - Проповедуем Drupal разработку Руслан Исай - Проповедуем Drupal разработку
Руслан Исай - Проповедуем Drupal разработку DrupalSib
 
Сергей Черебедов - Integration Drupal with NodeJS. What is it and why You nee...
Сергей Черебедов - Integration Drupal with NodeJS. What is it and why You nee...Сергей Черебедов - Integration Drupal with NodeJS. What is it and why You nee...
Сергей Черебедов - Integration Drupal with NodeJS. What is it and why You nee...DrupalSib
 

Mehr von DrupalSib (20)

SSO авторизация - Татьяна Киселева, DrupalJedi
SSO авторизация - Татьяна Киселева, DrupalJediSSO авторизация - Татьяна Киселева, DrupalJedi
SSO авторизация - Татьяна Киселева, DrupalJedi
 
BigPipe: ускоряем загрузку страниц - Давид Пашаев, DrupalJedi
BigPipe: ускоряем загрузку страниц - Давид Пашаев, DrupalJediBigPipe: ускоряем загрузку страниц - Давид Пашаев, DrupalJedi
BigPipe: ускоряем загрузку страниц - Давид Пашаев, DrupalJedi
 
Drupal в школе - Борис Шрайнер
Drupal в школе - Борис ШрайнерDrupal в школе - Борис Шрайнер
Drupal в школе - Борис Шрайнер
 
Евгений Юдкин - Коммуникационные инструменты в отделе продаж на примере интег...
Евгений Юдкин - Коммуникационные инструменты в отделе продаж на примере интег...Евгений Юдкин - Коммуникационные инструменты в отделе продаж на примере интег...
Евгений Юдкин - Коммуникационные инструменты в отделе продаж на примере интег...
 
D8 - Serialize, Normalize - Михаил Крайнюк, DrupalJedi
D8 - Serialize, Normalize - Михаил Крайнюк, DrupalJediD8 - Serialize, Normalize - Михаил Крайнюк, DrupalJedi
D8 - Serialize, Normalize - Михаил Крайнюк, DrupalJedi
 
Drupal - создание инсталляционных профайлов - Иван Абраменко, CimpleO
Drupal - создание инсталляционных профайлов - Иван Абраменко, CimpleODrupal - создание инсталляционных профайлов - Иван Абраменко, CimpleO
Drupal - создание инсталляционных профайлов - Иван Абраменко, CimpleO
 
Вадим Валуев - Искусство ИТ
Вадим Валуев - Искусство ИТВадим Валуев - Искусство ИТ
Вадим Валуев - Искусство ИТ
 
Андрей Юртаев - Mastering Views
Андрей Юртаев - Mastering ViewsАндрей Юртаев - Mastering Views
Андрей Юртаев - Mastering Views
 
Migrate drupal 6 to drupal 8. Абраменко Иван
Migrate drupal 6 to drupal 8.  Абраменко ИванMigrate drupal 6 to drupal 8.  Абраменко Иван
Migrate drupal 6 to drupal 8. Абраменко Иван
 
Entity возрождение легенды. Исай Руслан
Entity возрождение легенды. Исай РусланEntity возрождение легенды. Исай Руслан
Entity возрождение легенды. Исай Руслан
 
возводим динамическую таблицу, No views, no problem. Крайнюк Михаил
возводим динамическую таблицу, No views, no problem. Крайнюк Михаилвозводим динамическую таблицу, No views, no problem. Крайнюк Михаил
возводим динамическую таблицу, No views, no problem. Крайнюк Михаил
 
Реализация “гибких” списков Жамбалова Намжилма
Реализация “гибких” списков Жамбалова Намжилма Реализация “гибких” списков Жамбалова Намжилма
Реализация “гибких” списков Жамбалова Намжилма
 
Петр Селфин. Шок! Drupal 8 против SEO?! Без регистрации и SMS скачать бесплатно
Петр Селфин. Шок! Drupal 8 против SEO?! Без регистрации и SMS скачать бесплатноПетр Селфин. Шок! Drupal 8 против SEO?! Без регистрации и SMS скачать бесплатно
Петр Селфин. Шок! Drupal 8 против SEO?! Без регистрации и SMS скачать бесплатно
 
Сергей Синица. Разработка интернет-магазинов на Drupal
Сергей Синица. Разработка интернет-магазинов на DrupalСергей Синица. Разработка интернет-магазинов на Drupal
Сергей Синица. Разработка интернет-магазинов на Drupal
 
Eugene Ilyin. Why Drupal is cool?
Eugene Ilyin. Why Drupal is cool?Eugene Ilyin. Why Drupal is cool?
Eugene Ilyin. Why Drupal is cool?
 
Ivan Kotlyar. PostgreSQL in web applications
Ivan Kotlyar. PostgreSQL in web applicationsIvan Kotlyar. PostgreSQL in web applications
Ivan Kotlyar. PostgreSQL in web applications
 
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.
 
Anton Shloma. Drupal as an integration platform
Anton Shloma. Drupal as an integration platformAnton Shloma. Drupal as an integration platform
Anton Shloma. Drupal as an integration platform
 
Руслан Исай - Проповедуем Drupal разработку
Руслан Исай - Проповедуем Drupal разработку Руслан Исай - Проповедуем Drupal разработку
Руслан Исай - Проповедуем Drupal разработку
 
Сергей Черебедов - Integration Drupal with NodeJS. What is it and why You nee...
Сергей Черебедов - Integration Drupal with NodeJS. What is it and why You nee...Сергей Черебедов - Integration Drupal with NodeJS. What is it and why You nee...
Сергей Черебедов - Integration Drupal with NodeJS. What is it and why You nee...
 

XML в крупных размерах - Михаил Крайнюк, DrupalJedi

  • 1. XML в крупных размерах Михаил Крайнюк
  • 2. Михаил Крайнюк Drupal senior developer Мой опыт в Drupal разработке ●  Разработка ●  Управление проектами ●  Drupal аудит ●  Консультация ●  Локализация Drupal ●  Разработка Drupal модулей
  • 3. XML <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ord> <status>new</status> <regNumber>123</regNumber> <date>2017-05-09T03:00:00+03:00</date> <type>article</type> … <attachments name="test.txt">0KFKOAM287F98GS87D SDFS02E9+F09-ASDFO2W</attachments> </ord>
  • 7. SimpleXML $up_file = file_get_contents('php://input'); $ref = new SimpleXMLElement($up_file); $result = $ref->xpath('/ord/regNumber'); $string = (string) $result[0];
  • 8. SimpleXML $string = (string) $result[0]; $file_new = file_save_data(base64_decode(trim($string)), $path, TRUE); $node->field_files[LANGUAGE_NONE][$id] = array( 'fid' => $file_new->fid, 'display' => 1, 'description' => '', );
  • 10. Oops
  • 14. XMLReader $reader = new XMLReader(); $reader->open('php://input', NULL, LIBXML_PARSEHUGE); while($reader->read()) { if ($reader->nodeType != XMLReader::ELEMENT) { continue; } $tag_name = $reader->localName; switch ($tag_name) { ... } }
  • 15. XMLReader // Read file content. while($reader->read()) { ... case 'attachments': $reader->read(); if ($reader->nodeType == XMLReader::TEXT) { $file_content = trim($reader->value); } ... }
  • 16. XML
  • 17. XML // Prepare node blank for data import. $node = new stdClass(); $node->type = 'article'; $node->language = language_default('language'); node_object_prepare($node);
  • 18. XML $node_original = node_load($doc_id); // Mark the new node as the existing node. Don't move fields. $node->nid = $node_original->nid; $node->vid = $node_original->vid; $node->data = $node_original->data; $node->language = $node_original->language; $node->created = $node_original->created;
  • 19. Выводы ●  XML сложна – Feeds (гибкость, интерфейс, время, features) ●  XML проста и без файлов – SimpleXML (просто, удобно, застревает) ●  Есть файлы – XMLReader (импорт XML по 5 ГБ)
  • 20. Михаил Крайнюк Drupal senior developer kraynuk.m@i20.biz При поддержке: Организаторы: Спасибо!