Нативный 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