XML du Data DOM natif

Unité : HPDFXFARuntime

Méthodes

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

Ces méthodes de script sont disponibles sur les nœuds datasets, dataGroup et dataValue dans les événements TXFAWidgetRuntime

saveXML retourne du XML UTF-8 avec une déclaration et le nœud sélectionné comme élément document ; l'argument optionnel pretty ajoute une indentation au contenu uniquement composé d'éléments

loadXML accepte un document XML bien formé ; ignoreRoot importe ses enfants dans le nœud sélectionné, tandis que False importe l'élément document source comme enfant

overwrite supprime le contenu cible existant avant l'import ; sa valeur par défaut False ajoute le contenu et préserve les identités enfants existantes

Le nœud sélectionné conserve son identité et ses attributs ; les attributs enfants importés et leurs mappings d'espaces de noms sont préservés

Graphe et bindings immédiats

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 parsing natif réussi installe immédiatement les enfants importés dans le graphe du script courant ; les propriétés ordinaires et les sélecteurs SOM résolvent ces nœuds frais avant la publication de l'événement

Les cellules de données se synchronisent dans les deux sens avec les alias de champs liés, y compris les champs cachés, les cibles de binding nouvellement fournies et les sélecteurs dataRef existants descendants, jokers, classes et index numériques

Les imports scalaire-vers-groupe mettent à jour la classe de données de la cible et exposent ses éléments enfants importés ; un dataValue vidé a une valeur de chaîne vide

L'import d'un nouvel élément de données n'alloue pas de feuilles de données ambiguës sans rapport pour les bindings non résolus

Identité et scopes répétés

L'overwrite invalide les anciens handles enfants et publie de nouvelles identités enfants ; un script object peut conserver un handle de données importé frais et l'utiliser dans les événements suivants

L'ajout conserve les handles existants ; importer dans une ligne répétée change le scope de données natif de cette ligne et ses champs liés

Les imports XML fonctionnent aussi dans une occurrence créée par addInstance pendant le même événement

Remplacer le contenu des datasets met à jour $data et $record vers les nouvelles racines natives, et rebâtit les identités survivantes de formulaires et de script objects pour que l'état des modules lexicaux reste attaché à son scope de formulaire

Contenu et persistance

Les imports natifs et le XDP enregistré préservent le texte ordinaire, CDATA, les commentaires et les instructions de traitement dans l'ordre

Les commentaires et instructions de traitement restent hors de la sélection ordinaire d'éléments du Data DOM et ne deviennent pas du texte de champ visible

Les nœuds importés préservent leur URI d'espace de noms même sous un espace de noms par défaut d'ancêtre différent, y compris l'espace de noms par défaut vide explicite pour les éléments sans espace de noms

Les attributs préfixés étrangers conservent leurs noms étendus, et les noms locaux Unicode, le texte accentué et les caractères supplémentaires survivent à la sauvegarde et au rechargement natifs

Le saveXML en lecture seule ne matérialise pas de propriétés de formulaire et ne modifie pas les octets du XDP enregistré

Validation et rollback

Le parser XML natif vérifie la bonne formation, la validité des espaces de noms et des attributs, les caractères XML, le placement de la déclaration et la syntaxe des entités avant la mutation du graphe

Une entrée malformée peut être interceptée en JavaScript ; le graphe natif et script précédent reste disponible, et une mutation valide ultérieure peut toujours être validée

Un événement en échec restaure les octets du document, les valeurs des widgets, le graphe importé, les identités et l'état lexical des script objects, y compris les échecs après que l'import XML natif a déjà été appliqué

Chaque session JavaScript native conserve son véritable module DLL pendant la reconstruction des moteurs pour le replay de réponses ; moteurs, contextes et journals restent indépendants, et la référence du module est libérée après le démontage du dernier moteur natif

Le parsing et la sérialisation XML appliquent les budgets d'opérations, de profondeur, de nœuds, d'octets et de temps écoulé avec l'échéance d'événement d'origine du runtime et les limites de caractères de valeurs

Les imports ne résolvent pas d'entités externes et n'effectuent pas d'actions de fichiers, de réseau ou d'UI ; les déclarations DTD sont rejetées par ce parser

Scope actuel

Cette intégration du runtime d'événements cible actuellement Windows Win32 et Win64 ; l'intégration du runtime portable Linux reste en attente

Cette intégration fournit l'import et la sérialisation XML natifs plus la réévaluation courante des bindings ; la création autonome de createNode, la mutation arbitraire d'attributs de données, le reparentage, la navigation par fenêtre d'enregistrements, les prédicats de binding et la politique de binding global restent des cibles du modèle objet séparées

APIs associées

Data DOM natif, Bind SOM natif, TXFAEventBinding, TXFAEventAction et Runtime XFA interactif