Native Data DOM XML

Unit: HPDFXFARuntime

Metody

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

Ty skriptové metody jsou dostupné na uzlech datasets, dataGroup a dataValue v událostech TXFAWidgetRuntime

saveXML vrací UTF-8 XML s deklarací a vybraným uzlem jako dokumentovým elementem; volitelný argument pretty přidá odsazení čistě elementovému obsahu

loadXML přijme jeden dobře utvořený XML dokument; ignoreRoot importuje jeho potomky do vybraného uzlu, zatímco False importuje dokumentový element zdroje jako potomka

overwrite odstraní stávající obsah cíle, dřív než import; její default False připojuje obsah a zachovává stávající identity potomků

Vybraný uzel si uchová identitu i atributy; atributy importovaných potomků i jejich mapování namespace se zachovají

Okamžitý graf a bindingy

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

Úspěšné nativní parsování hned nainstaluje importované potomky do aktuálního skriptového grafu; běžné vlastnosti i SOM selektory rozřeší ty čerstvé uzly, dřív než publikace události

Datové buňky se synchronizují s navázanými field aliasy oběma směry, tedy i se skrytými poli, nově dodanými binding cíli i stávajícími selektory dataRef potomků, wildcardů, tříd a číselných indexů

Importy skalár na skupinu aktualizují datovou třídu cíle a vystaví jeho importované potomní elementy; vyprázdněné dataValue má prázdnou řetězcovou hodnotu

Import nového datového elementu nealokuje nesouvisející dvojsmyslné datové listy pro nerozřešené bindingy

Identita a opakované scopy

Overwrite zneplatní staré handly potomků a publikuje čerstvé potomní identity; skriptový objekt si může držet čerstvý importovaný datový handle a použít ho v dalších událostech

Append zachová stávající handly; import uvnitř opakovaného řádku změní nativní datový scope i navázaná pole toho řádku

XML importy fungují i uvnitř výskytu vytvořeného addInstance během téže události

Náhrada obsahu datasets aktualizuje $data i $record na nové nativní kořeny a rebaseuje přeživší identity formulářů i skriptových objektů, takže lexický stav modulu zůstává připojený ke svému form scopu

Obsah a perzistence

Nativní importy i uložené XDP zachovávají běžný text, CDATA, komentáře i processing instructions v pořadí

Komentáře i processing instructions zůstávají mimo běžný výběr elementů Data DOM a nestávají se viditelným textem polí

Importované uzly zachovají URI svého namespace, i pod jiným předkem s default namespace, tedy i explicitně prázdný default namespace pro elementy bez namespace

Cizí atributy s prefixem si uchovají expandované názvy a Unicode lokální názvy, diakritizovaný text i supplementární znaky přežijí nativní uložení i reload

Read-only saveXML nematerializuje form vlastnosti ani nemění uložené XDP bajty

Validace a rollback

Nativní XML parser zkontroluje dobrou utvořenost, platnost namespace a atributů, XML znaky, umístění deklarace i syntax entit, dřív než mutace grafu

Poškozený vstup lze v JavaScriptu zachytit; předchozí nativní i skriptový graf zůstává dostupný a pozdější platná mutace se pořád může zapsat

Neúspěšná událost obnoví bajty dokumentu, hodnoty widgetů, importovaný graf, identity i lexický stav skriptových objektů, tedy i selhání poté, co se nativní XML import už aplikoval

Každé nativní JavaScript sezení si při znovu stavbě engine pro replay odpovědí uchová svůj skutečný modul DLL; engine, kontexty i journály zůstávají nezávislé a reference modulu se uvolní po finálním teardownu nativního engine

Parsování i serializace XML vynucují rozpočty operací, hloubky, uzlů, bajtů i uplynulého času spolu s původním událostním deadlinem runtime i limity znaků hodnot

Importy nerozřeší externí entity ani neprovedou souborové, síťové či UI akce; deklarace DTD ten parser odmítá

Aktuální rozsah

Ta event-runtime integrace cílí teď na Windows Win32 a Win64; přenosná Linux runtime integrace zůstává ve hře

Ta integrace dodává nativní XML import i serializaci plus aktuální znovuvyhodnocení bindingů; samostatné createNode, libovolná mutace datových atributů, přesouvání rodičů, navigace v okně záznamů, binding predikáty i politika globálních bindingů zůstávají samostatnými objektově-modelovými cíli

Související API

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