Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

83 views

Published on

DrupalCafe проводится при поддержке DrupalJedi (http://drupaljedi.com/) и i20Group (http://i20.biz/)

Подписывайтесь на нас!

VK: https://vk.com/drupalsib
FB: https://facebook.com/groups/drupalsib
Twitter:
https://twitter.com/SibDrupalCamp
https://twitter.com/DrupalSib
Instagram: https://instagram.com/drupalsib

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. XML в крупных размерах Михаил Крайнюк
  2. 2. Михаил Крайнюк Drupal senior developer Мой опыт в Drupal разработке ●  Разработка ●  Управление проектами ●  Drupal аудит ●  Консультация ●  Локализация Drupal ●  Разработка Drupal модулей
  3. 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>
  4. 4. Feeds
  5. 5. Feeds
  6. 6. XML This XML is… Simple!
  7. 7. SimpleXML $up_file = file_get_contents('php://input'); $ref = new SimpleXMLElement($up_file); $result = $ref->xpath('/ord/regNumber'); $string = (string) $result[0];
  8. 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' => '', );
  9. 9. Happy
  10. 10. Oops
  11. 11. SimpleXML
  12. 12. SimpleXML
  13. 13. XML stream
  14. 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. 15. XMLReader // Read file content. while($reader->read()) { ... case 'attachments': $reader->read(); if ($reader->nodeType == XMLReader::TEXT) { $file_content = trim($reader->value); } ... }
  16. 16. XML
  17. 17. XML // Prepare node blank for data import. $node = new stdClass(); $node->type = 'article'; $node->language = language_default('language'); node_object_prepare($node);
  18. 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. 19. Выводы ●  XML сложна – Feeds (гибкость, интерфейс, время, features) ●  XML проста и без файлов – SimpleXML (просто, удобно, застревает) ●  Есть файлы – XMLReader (импорт XML по 5 ГБ)
  20. 20. Михаил Крайнюк Drupal senior developer kraynuk.m@i20.biz При поддержке: Организаторы: Спасибо!

×