Дана публікація передує ряд статей про альтернативні способи роботи з XML. "Альтернативних", тому що як правило робота з XML в 1С обмежується розбором XML за допомогою послідовного читання - порядкового розбору текстового вмісту. Але ж є ще й інші способи.
Дана публікація передує ряд статей про альтернативні способи роботи з XML. "Альтернативних", тому що як правило робота з XML в 1С обмежується розбором xml за допомогою послідовного читання - порядкового розбору текстового вмісту. Але ж є ще й інші способи.
DOM базується на уявленні документа будь-якої структури в вигляді дерева вузлів, кожен вузол (нода) якого є елементом, атрибут елемента, текстове значення елемента і т.п. Зв'язок між вузлами побудована за принципом "батько - підлеглі". У кореня документа (дерева DOM) батька немає. У тупикового елемента немає підлеглого (такі елементи абстрактно називаються листям дерева). Таким чином модель DOM може створюватися не тільки для XML, але фактично для будь-якого структурованого документа (HTML, XHTML). Так, наприклад, браузер користувача, отримуючи HTML код веб-сторінки з інтернету, будує дерево DOM цієї сторінки в оперативній пам'яті комп'ютера користувача.
Модель DOM відкриває широкі можливості по маніпуляції даними документа. Можна створювати нові вузли, вставляти їх на різних рівнях дерева, копіювати вузли, видаляти вузли, шукати вузли за різними параметрами і багато іншого.
Модель DOM документа XML наочно представлена на малюнку нижче.
Будь-який сучасний мову програмування має в своєму складі засоби (парсери) для роботи з таким деревом. Отримуючи на вхід строкове вміст XML-парсер вибудовує в оперативній пам'яті дерево вузлів і виконує маніпуляції з даними дерева. Перевага такого підходу перед порядковим розбором очевидно: одним запитом до дерева можна вибрати необхідні дані, які не перебираючи через підрядник весь документ, адже в оперативній пам'яті знаходиться повне уявлення елементів з усіма взімосвязямі.
Плюси порядкового розбору: потреба в ресурсах менше. Мінуси: довго за часом, щоб отримати дані потрібно через підрядник прочитати весь файл, складність програмного коду при розборі XML-документів зі складною структурою.
Перевага вибірки через DOM: швидкість вибірки даних, простота програмного коду. Мінуси: вимогливість до ресурсів, на побудову та запити до DOM витрачається оперативна пам'ять і процесорні потужності.
3. Василь Казьмін (awk) 680 13.08.12 12:08 Зараз в темі
Плюси порядкового розбору: потреба в ресурсах менше.
Мінуси: довго за часом. щоб отримати дані потрібно через підрядник прочитати весь файл, складність програмного коду при розборі xml документів зі складною структурою.
Перевага вибірки через DOM: швидкість вибірки даних. простота програмного коду.
Мінуси: вимогливість до ресурсів, на побудову та запити до DOM витрачається оперативна пам'ять і процесорні потужності.
А можна більш детально менше чого і швидше чого. Якщо довго по часу писати код, то може бути так. Якщо довго за часом отримати дані - то немає.
Про швидкість вибірки даних - це зовсім не так. В ДОМ як мінімум два проходи, а в потоковому парсером можна звести все до одного.
Мій висновок (з досвіду роботи):
Так що БУДИНОК зручніше, а потік швидше.
4. Anatolii Karasev (KapasMordorov) 408 13.08.12 13:44 Зараз в темі
(4)
Ага, "Перевага DOM: швидкість вибірки даних" звучить як анекдот. Особливо в момент, коли оперативна пам'ять закінчується.
5. Алекс Ю (AlexO) 119 14.08.12 15:00 Зараз в темі
Але всі вони спираються на базове уявлення документів xml у вигляді DOM
Це що за "базове уявлення" таке в рамках стандарту XML, і з якого такого доброго переляку "модель подання документів" раптом стала базовим по відношенню до XML?
6. Алекс Ю (AlexO) 119 14.08.12 15:05 Зараз в темі
7. Олександр Кузін (sashocq) 190 15.08.12 8:54 Зараз в темі
Згоден з (6). Це завжди був основний спосіб. А для великих файлів, DOM яких не поміщається в пам'яті, вже шукають всякі альтернативи типу послідовного читання. Поміняйте, будь ласка, заголовок.
8. Алекс Ю (AlexO) 119 15.08.12 10:30 Зараз в темі
(7) sashocq,
необхідне уточнення - Це завжди був основний спосіб при обміні документами. або обміні об'єктами, схожих за структурою на документи.
9. Сергій Назаренко (Hobbit_Jedi) 02.06.15 14:59 Зараз в темі
Щось у мене (8.3.5.1443) перший, найкращий, варіант через ВичіслітьВираженіеXPath не працює (навіть перший кореневий елемент не хоче вибирати, не те, що по довгому шляху).
Довелося робити через "Для Кожного Вузол З ДокументDOM.ДочерніеУзли Цикл"
10. Артем Шална (88wau24ru) 10 10.03.16 5:53 Зараз в темі
Созданіе08.08.12 10:51
Обновленіе09.08.12 23:48
Код откритНе вказано