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 elemento de documento; el argumento opcional pretty añade sangría al contenido de solo elementos

loadXML acepta un documento XML bien formado; ignoreRoot importa sus hijos en el nodo seleccionado, mientras que False importa el elemento de documento de origen como hijo

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

El nodo seleccionado conserva 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 correcto instala de inmediato los hijos importados en el grafo del script actual; las propiedades ordinarias y los selectores SOM resuelven esos nodos recién llegados antes de la publicación del evento

Las celdas de datos se sincronizan en ambas direcciones con los alias de campos enlazados, incluidos campos ocultos, objetivos de binding recién suministrados y selectores dataRef existentes de descendientes, comodines, clases e índices numéricos

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ía

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 de hijos antiguos y publica identidades de hijos nuevas; un script object puede retener un handle de datos importado fresco y usarlo en eventos posteriores

Añadir contenido preserva los handles existentes; importar dentro de una fila repetida cambia el ámbito de datos nativo 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 reubica las identidades supervivientes de formularios y script objects para que el estado léxico de los módulos siga anclado a su ámbito de formulario

Contenido y persistencia

Las importaciones nativas y el XDP guardado preservan en orden el texto ordinario, CDATA, comentarios e instrucciones de procesamiento

Los comentarios y las instrucciones de procesamiento 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 externos conservan los 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 comprueba buen formato, validez de namespaces y atributos, caracteres XML, colocación de la declaración y sintaxis de entidades antes de mutar el grafo

Una entrada mal formada 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 producidos después de aplicar ya la importación XML nativa

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

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

Las importaciones no resuelven entidades externas ni realizan acciones de ficheros, red o UI; este parser rechaza las declaraciones DTD

Ámbito actual

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

Esta integración suministra importación y serialización XML nativas más la reevaluación actual de bindings; el createNode independiente, la mutación de atributos de datos arbitrarios, el reparentado, la navegación por ventanas de registros, los predicados de binding y la política de global-binding siguen siendo objetivos separados del modelo de objetos

APIs relacionadas

Native Data DOM, Native Bind SOM, TXFAEventBinding, TXFAEventAction y Interactive XFA Runtime