XML nativo do Data DOM

Unit: HPDFXFARuntime

Métodos

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

Estes métodos de script estão disponíveis em nós datasets, dataGroup e dataValue nos eventos do TXFAWidgetRuntime

saveXML retorna XML UTF-8 com uma declaração e o nó selecionado como document element dele; o argument opcional pretty adiciona indentação a conteúdo somente de elementos

loadXML aceita um documento XML bem formado; ignoreRoot importa os filhos dele no nó selecionado, enquanto False importa o document element do documento de origem como filho

overwrite remove o conteúdo existente do alvo antes de importar; o default False dele anexa conteúdo e preserva as identidades existentes dos filhos

O nó selecionado retém sua identidade e atributos; os atributos dos filhos importados e os mapeamentos de namespaces deles são preservados

Grafo imediato e bindings

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

Um parse nativo bem-sucedido instala imediatamente os filhos importados no grafo atual de scripts; propriedades comuns e selectors SOM resolvem esses nós frescos antes da publicação do evento

Células de dados sincronizam com aliases vinculados de campos em ambas as direções, incluindo campos ocultos, alvos de bindings recém-fornecidos e os selectors dataRef existentes de descendentes, wildcards, classes e índices numéricos

Imports de escalar para grupo atualizam a classe de dados do alvo e expõem os elementos filhos importados dele; um dataValue esvaziado tem um valor de string vazio

Importar um elemento de dados novo não aloca folhas de dados ambíguas não relacionadas para bindings não resolvidos

Identidade e escopos repetidos

Overwrite invalida handles antigos de filhos e publica identidades frescas de filhos; um objeto de script pode reter um handle fresco de dados importados e usá-lo em eventos subsequentes

Append preserva os handles existentes; importar dentro de uma linha repetida muda o escopo nativo de dados daquela linha e os campos vinculados dela

Imports de XML também funcionam dentro de uma ocorrência criada por addInstance durante o mesmo evento

Substituir o conteúdo dos datasets atualiza $data e $record para as raízes nativas novas, e rebaseia as identidades sobreviventes de formulários e objetos de scripts para que o estado lexical de módulos permaneça anexado ao escopo de formulários dele

Conteúdo e persistência

Imports nativos e o XDP salvo preservam texto comum, CDATA, comentários e processing instructions em ordem

Comentários e processing instructions permanecem fora da seleção comum de elementos do Data DOM e não viram texto visível de campos

Nós importados preservam o namespace URI deles mesmo sob um namespace default de ancestral diferente, incluindo o namespace default explicitamente vazio para elementos sem namespace

Atributos estrangeiros com prefixo retêm os nomes expandidos, e nomes locais Unicode, texto acentuado e caracteres suplementares sobrevivem a save e reload nativos

saveXML somente leitura não materializa propriedades de formulários nem muda os bytes do XDP salvo

Validação e rollback

O parser nativo de XML checa well-formedness, validade de namespaces e atributos, caracteres XML, posicionamento de declarações e sintaxe de entidades antes da mutação do grafo

Entrada malformada pode ser capturada em JavaScript; o grafo anterior nativo e de scripts permanece disponível, e uma mutação válida posterior ainda pode commitar

Um evento com falha restaura os bytes do documento, valores de widgets, grafo importado, identidades e estado lexical de objetos de scripts, incluindo falhas depois que o import nativo de XML já foi aplicado

Cada sessão nativa de JavaScript retém o módulo DLL real dela enquanto reconstrói engines para o replay de respostas; engines, contextos e journals permanecem independentes, e a referência de módulo é liberada após o teardown final do engine nativo

O parsing e a serialização de XML aplicam os orçamentos de operações, profundidade, nós, bytes e tempo decorrido junto do deadline original de eventos e dos limites de caracteres de valor do runtime

Imports não resolvem entidades externas nem executam ações de arquivos, rede ou UI; declarações DTD são rejeitadas por este parser

Escopo atual

Esta integração de runtime de eventos atualmente mira Windows Win32 e Win64; a integração do runtime portátil do Linux permanece pendente

Esta integração fornece import e serialização nativos de XML mais a reavaliação atual de bindings; createNode independente, mutação arbitrária de atributos de dados, reparenting, navegação de janelas de records, predicados de bindings e política global de binds permanecem alvos separados do modelo de objetos

APIs relacionadas

Data DOM nativo, Bind SOM nativo, TXFAEventBinding, TXFAEventAction e Runtime XFA interativo