XML del Data DOM nativo

Unit: HPDFXFARuntime

Métodos

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

Estos métodos de script están disponibles en los nodos datasets, dataGroup y dataValue dentro de los eventos de TXFAWidgetRuntime

saveXML devuelve XML UTF-8 con una declaración y el nodo seleccionado como document element; el argumento opcional pretty agrega indentación al contenido de solo elementos

loadXML acepta un documento XML well-formed; ignoreRoot importa sus hijos en el nodo seleccionado, mientras que False importa el document element del documento de origen como hijo

overwrite elimina el contenido existente del destino antes de importar; su valor por defecto False agrega contenido y preserva las identidades existentes de los hijos

El nodo seleccionado retiene su identidad y atributos; los atributos de los hijos importados y sus mapeos de namespace se preservan

Grafo y bindings inmediatos

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");

Un parse nativo exitoso instala de inmediato los hijos importados en el grafo actual del script; las propiedades ordinarias y los selectores SOM resuelven esos nodos frescos antes de la publicación del evento

Las celdas de datos se sincronizan en ambas direcciones con los alias de campos enlazados, incluidos los campos ocultos, los destinos de binding recién suministrados y los selectores dataRef existentes descendientes, con comodines, de clase y de índice numérico

Las importaciones de escalar a grupo actualizan la clase de datos del destino y exponen sus elementos hijos importados; un dataValue vaciado tiene un valor de cadena vacío

Importar un nuevo elemento de datos no asigna hojas de datos ambiguas no relacionadas para bindings sin resolver

Identidad y ámbitos repetidos

Overwrite invalida los handles viejos de hijos y publica identidades frescas de hijos; un script object puede retener un handle de datos importado fresco y usarlo en eventos posteriores

Appending preserva los handles existentes; importar dentro de una fila repetida cambia el ámbito nativo de datos de esa fila y sus campos enlazados

Las importaciones XML también funcionan dentro de una ocurrencia creada por addInstance durante el mismo evento

Reemplazar el contenido de datasets actualiza $data y $record a las nuevas raíces nativas, y rebasa las identidades sobrevivientes de formularios y script objects para que el estado léxico de módulos permanezca adjunto a su ámbito de formulario

Contenido y persistencia

Las importaciones nativas y el XDP guardado preservan en orden el texto ordinario, CDATA, comentarios y processing instructions

Los comentarios y processing instructions quedan fuera de la selección ordinaria de elementos del Data DOM y no se convierten en texto visible de campos

Los nodos importados preservan su namespace URI incluso bajo un namespace por defecto de ancestro distinto, incluido el namespace por defecto vacío explícito para elementos sin namespace

Los atributos con prefijo externo retienen nombres expandidos, y los nombres locales Unicode, el texto con acentos y los caracteres suplementarios sobreviven al guardado y recarga nativos

El saveXML de solo lectura no materializa propiedades de formulario ni cambia los bytes del XDP guardado

Validación y rollback

El parser XML nativo verifica well-formedness, validez de namespaces y atributos, caracteres XML, colocación de la declaración y sintaxis de entidades antes de la mutación del grafo

Una entrada malformada puede capturarse en JavaScript; el grafo nativo y de script anterior sigue disponible, y una mutación válida posterior aún puede confirmarse

Un evento fallido restaura los bytes del documento, los valores de widgets, el grafo importado, las identidades y el estado léxico de script objects, incluidos los fallos después de que la importación XML nativa ya se aplicó

Cada sesión nativa de JavaScript retiene su módulo DLL real mientras reconstruye engines para el replay de respuestas; engines, contextos y journals permanecen independientes, y la referencia al módulo se libera tras el teardown final del engine nativo

El parsing y la serialización XML aplican presupuestos de operaciones, profundidad, nodos, bytes y tiempo transcurrido junto con el deadline original del evento del runtime y los límites de caracteres de valores

Las importaciones no resuelven entidades externas ni realizan acciones de archivos, red o UI; las declaraciones DTD son rechazadas por este parser

Alcance actual

Esta integración del runtime de eventos apunta actualmente a Windows Win32 y Win64; la integración del runtime portable Linux sigue pendiente

Esta integración suministra importación y serialización XML nativas más reevaluación actual de bindings; createNode independiente, mutación de atributos de datos arbitrarios, reubicación de padres, navegación de ventana de records, predicados de binding y política de binding global siguen siendo objetivos del modelo de objetos separados

APIs relacionadas

Data DOM nativo, Native Bind SOM, TXFAEventBinding, TXFAEventAction y Runtime XFA interactivo