Нативный XML для Data DOM

Модуль: HPDFXFARuntime

Методы

dataNode.loadXML(xml, ignoreRoot = true, overwrite = false);
const compact = dataNode.saveXML();
const readable = dataNode.saveXML("pretty");

Эти скриптовые методы доступны на узлах datasets, dataGroup и dataValue в событиях TXFAWidgetRuntime

saveXML возвращает UTF-8 XML с объявлением и выбранным узлом в качестве элемента документа; необязательный аргумент pretty добавляет отступы к содержимому из одних элементов

loadXML принимает один корректно сформированный XML-документ; ignoreRoot импортирует его детей в выбранный узел, а False импортирует элемент документа источника как ребёнка

overwrite удаляет существующее содержимое цели перед импортом; дефолтный False добавляет содержимое и сохраняет идентичности существующих детей

Выбранный узел сохраняет свою идентичность и атрибуты; атрибуты импортированных детей и их привязки пространств имён сохраняются

Немедленный граф и привязки

const record = xfa.datasets.data.main;
record.loadXML("<main><amount>42</amount></main>", true, true);
const amount = record.amount;
amount.value = "43";
if (this.parent.amount.rawValue !== "43") throw new Error("Missing binding update");

Успешный нативный разбор немедленно устанавливает импортированных детей в текущий граф скрипта; обычные свойства и SOM-селекторы разрешают эти свежие узлы до публикации события

Ячейки данных синхронизируются со связанными алиасами полей в обе стороны, включая скрытые поля, новые цели привязки и существующие селекторы dataRef потомков, wildcard, классов и числовых индексов

Импорт скаляра в группу обновляет класс данных цели и открывает её импортированные дочерние элементы; опустошённый dataValue имеет пустое строковое значение

Импорт нового элемента данных не выделяет посторонние неоднозначные data-листья для неразрешённых привязок

Идентичность и повторяющиеся области

Overwrite инвалидирует старые хэндлы детей и публикует свежие идентичности детей; script object может удерживать свежий импортированный data-хэндл и использовать его в последующих событиях

Добавление сохраняет существующие хэндлы; импорт внутри повторяющейся строки меняет нативную область данных этой строки и связанные поля

Импорт XML также работает внутри вхождения, созданного addInstance в том же событии

Замена содержимого datasets обновляет $data и $record до новых нативных корней и переносит базы выживших идентичностей формы и script objects, чтобы лексическое состояние модулей осталось привязано к своей области формы

Содержимое и сохранение

Нативный импорт и сохраняемый XDP сохраняют обычный текст, CDATA, комментарии и инструкции обработки в исходном порядке

Комментарии и инструкции обработки остаются вне обычного выбора элементов Data DOM и не становятся видимым текстом полей

Импортированные узлы сохраняют свой URI пространства имён даже под другим родительским дефолтным пространством имён, включая явное пустое дефолтное пространство имён для элементов без него

Чужие атрибуты с префиксами сохраняют расширенные имена, а локальные имена Unicode, текст с акцентами и дополнительные символы переживают нативное сохранение и перезагрузку

saveXML только для чтения не материализует свойства формы и не меняет сохранённые байты XDP

Валидация и rollback

Нативный XML-парсер проверяет корректность формы, валидность пространств имён и атрибутов, символы XML, размещение объявления и синтаксис сущностей до мутации графа

Некорректный ввод можно поймать в JavaScript; предыдущий нативный и скриптовый граф остаётся доступным, и последующая корректная мутация всё ещё может зафиксироваться

Неудавшееся событие восстанавливает байты документа, значения виджетов, импортированный граф, идентичности и лексическое состояние script objects, включая сбои после уже применённого нативного импорта XML

Каждая нативная JavaScript-сессия удерживает свою фактическую DLL-модуль при пересборке движков для replay ответов; движки, контексты и журналы остаются независимыми, а ссылка на модуль освобождается после финального демонтажа последнего нативного движка

Разбор и сериализация XML соблюдают бюджеты операций, глубины, узлов, байтов и времени вместе с исходным дедлайном события рантайма и лимитами символов значений

Импорт не разрешает внешние сущности и не выполняет файловые, сетевые или UI-действия; DTD-объявления этот парсер отклоняет

Текущая область

Эта интеграция событийного рантайма сейчас ориентирована на Windows Win32 и Win64; переносимая интеграция Linux-рантайма остаётся в ожидании

Эта интеграция поставляет нативный импорт и сериализацию XML плюс переоценку текущих привязок; автономный createNode, мутация произвольных атрибутов данных, перепривязка к другому родителю, навигация по окну записей, предикаты привязок и политика глобальных привязок остаются отдельными целями объектной модели

Связанные API

Нативный Data DOM, Нативный Bind SOM, TXFAEventBinding, TXFAEventAction и Интерактивный XFA Runtime