XML nativo do Data DOM

Unidade: HPDFXFARuntime

Métodos

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

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

saveXML devolve XML UTF-8 com uma declaração e o nó selecionado como elemento de documento dele; o argumento opcional pretty acrescenta indentação a conteúdo apenas de elementos

loadXML aceita um documento XML bem formado; ignoreRoot importa os filhos dele para o nó selecionado, enquanto False importa o elemento de documento da fonte como filho

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

O nó selecionado mantém a identidade e os atributos dele; atributos de filhos importados e os mapeamentos de namespaces deles são preservados

Grafo e bindings imediatos

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 parsing nativo bem-sucedido instala imediatamente os filhos importados no grafo atual de scripts; propriedades ordinárias e seletores SOM resolvem esses nós frescos antes da publicação de eventos

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 seletores existentes de dataRef de descendentes, wildcards, classes e índices numéricos

Importações de escalares para grupos 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 ambíguas alheias de dados para bindings não resolvidos

Identidades e âmbitos 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

Appending preserva handles existentes; importar dentro de uma linha repetida altera o âmbito nativo de dados dessa linha e os campos vinculados dela

Importações XML também funcionam dentro de uma ocorrência criada por addInstance durante o mesmo evento

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

Conteúdo e persistência

Importações nativas e XDP guardado preservam texto ordinário, CDATA, comentários e processing instructions pela ordem deles

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

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

Atributos estrangeiros com prefixo mantêm nomes expandidos, e nomes locais Unicode, texto acentuado e carateres suplementares sobrevivem a gravação e recarregamento nativos

saveXML só de leitura não materializa propriedades de formulários nem altera bytes XDP guardados

Validação e rollback

O parser nativo XML verifica boa formação, validade de namespaces e de atributos, carateres XML, posicionamento de declarações e sintaxe de entidades antes da mutação do grafo

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

Um evento falhado restaura bytes do documento, valores de widgets, o grafo importado, identidades e estado lexical de objetos de scripts, incluindo falhas depois de a importação nativa de XML já ter sido aplicada

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

Parsing e serialização XML impõem orçamentos de operações, profundidade, nós, bytes e tempo decorrido juntamente com o prazo original de eventos do runtime e os limites dele de carateres de valores

Importações não resolvem entidades externas nem realizam ações de ficheiros, de rede nem de UI; declarações DTD são rejeitadas por este parser

Âmbito atual

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

Esta integração fornece importação e serialização nativas de XML mais reavaliação atual de bindings; createNode autónomo, mutação arbitrária de atributos de dados, reparenting, navegação de janelas de registos, predicados de bindings e políticas globais de bindings continuam a ser alvos separados do modelo de objetos

APIs relacionadas

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