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