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