Utilisation du modèle DOM

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation de documents XML - Index


DOM (Document Object Model) est un ensemble d'interfaces standard définissant la manière de représenter un document XML analysé. Ces interfaces sont implémentées par plusieurs fournisseurs tiers différents. Si vous ne souhaitez pas utiliser l'implémentation par défaut livrée avec RAD Studio, il existe un mécanisme de recensement qui vous permet d'intégrer des fournisseurs XML supplémentaires dans le framework XML.

L'unité Xml.xmldom contient les déclarations de toutes les interfaces DOM définies dans la spécification XML DOM de niveau 2 du W3C. Chaque fournisseur XML présente une implémentation de ces interfaces.

Vous pouvez manipuler directement les interfaces DOM pour analyser et modifier des documents XML. Appelez simplement la fonction GetDOM pour obtenir une interface IDOMImplementation que vous pourrez utiliser comme point de départ.

Remarque : Pour une description détaillée des interfaces DOM, voir les déclarations dans l'unité Xml.xmldom, la documentation de votre fournisseur XML ou les spécifications fournies sur le site Web du W3C (www.w3.org).

Vous pouvez choisir d'utiliser des classes XML spéciales plutôt que de manipuler directement les interfaces DOM. Elles sont décrites dans :

Liste des fournisseurs XML intégrés

Le tableau suivant présente un comparatif des fournisseurs XML pris en charge par RAD Studio par défaut :

Implémentation Unité Variable globale Description

MSXML

Xml.Win.msxmldom

SMSXML

Le plus rapide des fournisseurs XML intégrés de RAD Studio. Windows uniquement. Par défaut.

Pour une prise en charge multiplate-forme, vous devez choisir un fournisseur XML différent. Si vous ne spécifiez pas un autre fournisseur XML, votre application ne prendra pas en charge XML sur d'autres plates-formes que Windows, et une exception se produira chaque fois que vous l'exécuterez sur d'autres plates-formes.

OmniXML

Xml.omnixmldom

sOmniXmlVendor

Bien plus rapide qu'ADOM, mais légèrement plus lent que MSXML. Multiplate-forme.

ADOM

Xml.adomxmldom

sAdom4XmlVendor

Plus lent que les autres fournisseurs XML intégrés de RAD Studio. Multiplate-forme.

Sélection d'un fournisseur XML

Lorsque vous construisez une application, RAD Studio utilise le fournisseur XML intégré par défaut, MSXML.

Si vous ne spécifiez pas un fournisseur XML différent, votre application ne prendra pas en charge XML sur d'autres plates-formes que Windows, et une exception se produira chaque fois que vous l'exécuterez sur d'autres plates-formes. Pour les applications multiplates-formes, OmniXML est actuellement le meilleur choix, car il fournit de bien meilleures performances qu'ADOM.

Pour choisir un fournisseur XML différent, ajoutez une référence à l'unité du fournisseur au sein de l'unité dans laquelle vous utilisez les fonctionnalités XML de la RTL, par exemple la classe TXMLDocument. Si vous ajoutez plus d'une unité de fournisseur XML, la première unité référencée est utilisée comme fournisseur XML. Si vous devez redéfinir ce comportement, changez la valeur de la variable globale DefaultDOMVendor en la remplaçant par la variable globale du fournisseur XML que vous souhaitez utiliser.

Remarque : Vous pouvez retrouver l'unité et la variable globale de chaque fournisseur XML dans la liste des fournisseurs XML intégrés ci-dessus.

Lorsque vous utilisez le composant TXMLDocument, vous pouvez choisir un fournisseur XML en utilisant sa propriété DOMVendor. Lorsque vous changez la valeur de DOMVendor, l'unité qui utilise le composant est configurée pour utiliser le fournisseur XML spécifié, de sorte que vous n'avez pas besoin de changer les références d'unité ou la variable globale DefaultDOMVendor manuellement.

Utilisation d'un fournisseur XML différent pour chaque plate-forme

Pour utiliser un fournisseur XML différent pour chaque plate-forme (par ex., MSXML dans Windows et OmniXML dans d'autres plates-formes), utilisez la compilation conditionnelle :

Par exemple, pour profiter de performances optimales sur chaque plate-forme, vous pouvez utiliser le code suivant :

Delphi :

uses
    // …
    {$IFDEF MSWINDOWS}Xml.Win.msxmldom{$ELSE}Xml.omnixmldom{$ENDIF};

C++ :

#ifdef MSWINDOWS
    #include <Xml.Win.msxmldom.hpp>
#else
    #include <Xml.omnixmldom.hpp>
#endif

Utilisation d'un fournisseur XML personnalisé

Pour utiliser un fournisseur XML autre que les fournisseurs XML intégrés listés ci-dessus, vous devez créer une unité définissant un descendant de la classe Xml.xmldom.TDOMVendor. Cette unité peut fonctionner comme l'un des fournisseurs XML intégrés, en rendant votre fournisseur XML disponible lorsqu'elle est incluse dans un projet.

Dans votre classe dérivée, vous devez redéfinir deux méthodes : la méthode Description, qui renvoie une chaîne identifiant le fournisseur, et la méthode DOMImplementation, qui renvoie l'interface de niveau supérieur (IDOMImplementation).

Votre nouvelle unité doit appeler la procédure globale RegisterDOMVendor pour recenser votre fournisseur XML. Cet appel s'effectue généralement dans la section initialization de l'unité.

Lorsque votre unité est déchargée, elle doit annuler elle-même son recensement pour indiquer que votre fournisseur XML n'est plus disponible. Appelez la procédure globale UnRegisterDOMVendor pour annuler le recensement de votre fournisseur XML. Cet appel s'effectue généralement dans la section finalization de l'unité.

Certains fournisseurs XML proposent des extensions aux interfaces DOM standard. Pour vous permettre d'utiliser ces extensions, l'unité Xml.xmldom définit également une interface IDOMNodeEx. IDOMNodeEx est un descendant de l'interface standard IDOMNode qui inclut les plus utiles de ces extensions.

Voir aussi