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