Das Dokumentobjektmodell verwenden

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Mit XML-Dokumenten arbeiten - Index


Das Dokumentobjektmodell (DOM) ist ein Satz von Standard-Interfaces zur Darstellung eines analysierten XML-Dokuments. Diese Interfaces werden von verschiedenen Drittanbietern implementiert. Wenn Sie die zum Lieferumfang von RAD Studio gehörende Standardimplementierung nicht verwenden möchten, können Sie über einen Registrierungsmechanismus andere XML-Anbieter in das XML-Framework integrieren.

Die Unit Xml.xmldom enthält Deklarationen für alle DOM-Interfaces, die in der W3C XML DOM Level 2-Spezifikation (EN) definiert sind. Jeder XML-Anbieter liefert eine Implementierung für diese Interfaces.

Sie können direkt mit den DOM-Interfaces arbeiten, um XML-Dokumente auszuwerten und zu bearbeiten. Rufen Sie einfach die Funktion GetDOM auf, um ein IDOMImplementation-Interface zu erhalten, das Sie als Ausgangspunkt verwenden können.

Hinweis: Eine ausführliche Beschreibung der DOM-Interfaces finden Sie in den Deklarationen der Unit Xml.xmldom, in der Dokumentation Ihres DOM-Anbieters oder in den Spezifikationen auf der W3C-Website (www.w3.org).

Es ist für Sie möglicherweise praktischer, spezielle XML-Klassen zu verwenden, anstatt direkt mit den DOM-Interfaces zu arbeiten. Diese werden in folgenden Themen beschrieben:

Liste der integrierten XML-Anbieter

Die folgende Tabelle enthält einen Vergleich der XML-Anbieter, die standardmäßig von RAD Studio unterstützt werden:

Implementierung Unit Globale Variable Beschreibung

MSXML (EN)

Xml.Win.msxmldom

SMSXML

Schnellster der in RAD Studio integrierten XML-Anbieter. Nur Windows. Vorgabe.

Um eine plattformübergreifende Unterstützung zu ermöglichen, müssen Sie einen anderen XML-Anbieter auswählen. Wenn Sie keinen anderen XML-Anbieter festlegen, unterstützt Ihre Anwendung XML nur auf Windows-Plattformen, und beim Ausführen Ihrer Anwendung auf anderen Plattformen erhalten Sie eine Laufzeit-Exception.

OmniXML (EN)

Xml.omnixmldom

sOmniXmlVendor

Schneller als ADOM, aber geringfügig langsamer als MSXML. Plattformübergreifend.

ADOM (EN)

Xml.adomxmldom

sAdom4XmlVendor

Langsamer als die anderen in RAD Studio integrierten XML-Anbieter. Plattformübergreifend.

Auswählen von XML-Anbietern

Wenn Sie eine Anwendung erzeugen, verwendet RAD Studio den integrierten Standard-XML-Anbieter MSXML.

Wenn Sie keinen anderen XML-Anbieter festlegen, unterstützt Ihre Anwendung XML nur auf Windows-Plattformen, und beim Ausführen Ihrer Anwendung auf anderen Plattformen erhalten Sie eine Laufzeit-Exception. Für plattformübergreifende Anwendungen ist OmniXML derzeit am besten geeignet, damit eine besserer Leistung als mit ADOM erzielt wird.

Fügen Sie einen Verweis auf die Unit des Anbieters in die Unit ein, in der Sie die RTL-XML-Funktionen, wie z. B. die Klasse TXMLDocument, verwenden, um einen anderen XML-Anbieter festzulegen. Wenn Sie mehrere XML-Anbieter-Units hinzufügen, wird die erste referenzierte Unit als XML-Anbieter verwendet. Ändern Sie den Wert der globalen Variable DefaultDOMVendor in die globale Variable des XML-Anbieters, den Sie verwenden möchten, um dieses Verhalten zu überschreiben.

Hinweis: Sie können die Unit und die globale Variable der XML-Anbieter oben in der Liste der integrierten XML-Anbieter nachschlagen.

Wenn Sie die Komponente TXMLDocument verwenden, können Sie einen XML-Anbieter mit der Eigenschaft DOMVendor auswählen. Wenn Sie den Wert von DOMVendor ändern, wird die Unit, die diese Komponente enthält, so konfiguriert, dass der angegebene XML-Anbieter verwendet wird und Sie keine Unit-Referenzen oder die globale Variable DefaultDOMVendor manuell anpassen müssen.

Verwenden eines anderen XML-Anbieters für jede Plattform

Mit der bedingten Compilierung können Sie verschiedene XML-Anbieter für jede Plattform (z. B. MSXML für Windows und OmniXML für andere Plattformen) festlegen:

Um beispielsweise auf jeder Plattform die bestmögliche Leistung zu erzielen, können Sie den folgenden Code verwenden:

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

Verwenden eines benutzerdefinierten XML-Anbieters

Um einen anderen als einen der oben aufgeführten integrierten XML-Anbieter zu verwenden, müssen Sie eine Unit erstellen, in der ein Nachkomme der Klasse Xml.xmldom.TDOMVendor definiert wird. Diese Unit kann dann wie einer der integrierten XML-Anbieter genutzt werden. Indem der XML-Anbieter dem Projekt hinzugefügt wird, steht er der Unit zur Verfügung.

In Ihrer abgeleiteten Klasse müssen Sie zwei Methoden überschreiben: die Methode Description, die einen String mit dem Hersteller zurückgibt, und die Methode DOMImplementation, die das Interface der obersten Ebene (IDOMImplementation) zurückgibt.

In Ihrer Unit muss die globale Prozedur RegisterDOMVendor zum Registrieren des XML-Anbieters aufgerufen werden. Dieser Aufruf gehört in der Regel in den Initialisierungsabschnitt der Unit.

Beim Entladen der Unit muss sie ihre Registrierung aufheben, um anzugeben, dass der XML-Anbieter nicht mehr zur Verfügung steht. Rufen Sie die globale Prozedur UnRegisterDOMVendor auf, um die Registrierung des XML-Anbieters aufzuheben. Dieser Aufruf gehört in der Regel in den Finalisierungsabschnitt der Unit.

Einige XML-Anbieter stellen Erweiterungen des Standard-DOM-Interface bereit. Damit Sie diese Erweiterungen verwenden können, definiert die Unit Xml.xmldom zusätzlich ein Interface namens IDOMNodeEx. IDOMNodeEx ist ein Nachkomme der Standardklasse IDOMNode, die die nützlichsten Funktionen dieser Erweiterungen beinhaltet.

Siehe auch