Per Mausklick bewerten und Feedback geben
MSDN
MSDN Library
Entwicklerbibliothek
Office Development
Office (Allgemein)
 Entsperren von Office XML-Daten übe...
Entsperren von Office XML-Daten über das XML-Dokumentobjektmodell (XML DOM)
Veröffentlicht: 19. Mrz 2002 | Aktualisiert: 21. Jun 2004
Von Paul Cornell und Frank C. Rice

Betrifft:
Microsoft Office XP
Microsoft XML Core Services 4.0

Dieser Artikel zeigt, wie mit Office XML-basierten Daten unter Verwendung von Microsoft XML Core Services (MSXML) 4.0 - ehemals Microsoft XML Parser - gearbeitet wird.


Auf dieser Seite

Einführung Einführung
Installieren von Microsoft XML Core Services 4.0 Installieren von Microsoft XML Core Services 4.0
Erstellen eines Verweises auf die MSXML 4.0-DLL Erstellen eines Verweises auf die MSXML 4.0-DLL
Arbeiten mit dem XML DOM Arbeiten mit dem XML DOM
Arbeiten mit XML-Datenknoten Arbeiten mit XML-Datenknoten

Einführung

Microsoft® Access 2002 und Microsoft Excel 2002 können Daten im XML-Format (Extensible Markup Language) importieren und exportieren. Dieses Format basiert auf Industriestandards und ist ein anbieter- oder anwendungsneutrales Austauschformat.

Obwohl XML-Daten aus reinem Text bestehen und mit einem beliebigen Text-Editor angezeigt werden können, möchten Sie möglicherweise programmtechnisch auf XML-Daten zugreifen, um folgende Aufgaben durchzuführen:

  • Abfragen von einzelnen Spalten, Zeilen oder Feldern, die XML-Daten enthalten (z.B. Überprüfen von allgemeinen Hauptbuchkonten-Klassifizierungen, die von Vertriebsmitarbeitern für einzelne Aufwandsposten vorgenommen wurden).

  • Ändern des Formats von XML-Daten (z.B. Ändern einer proprietären Preisanfrage, die in einer auf Access-Formularen basierenden Anwendung erstellt wurde, in eine RosettaNet PIP 3A1-Preisanfrage, die gemeinsam mit den Lieferkettenpartnern genutzt wird).

  • Übernehmen oder Ändern von Datenanzeigeinformationen (z.B. Zusammenfassen von Schlüsselinformationen in einer Excel-Kalkulationstabelle für Manager oder andere Entscheidungsträger, ohne sich mit dem Ausblenden oder Sperren der ursprünglichen Datenzellen befassen zu müssen).


In diesem Artikel wird erläutert, wie Office XML-basierte Daten mit Hilfe von Microsoft XML Parser-Technologie entsperrt werden können, um diesen Lösungstypen gerecht zu werden.

Installieren von Microsoft XML Core Services 4.0

Microsoft stellt eine XML-Parser-Technologie bereit, um programmtechnisch auf XML-Daten zuzugreifen. Dieser Parser ist als Microsoft XML Parser (für Version 3.0 und früher) bzw. als Microsoft XML Core Services (für Version 4.0) bekannt. Sowohl Microsoft XML Parser als auch Microsoft XML Core Services 4.0 werden mit MSXML abgekürzt, gefolgt von der Versionsnummer. Beispiel: MSXML 3.0 oder MSXML 4.0.

MSXML 4.0, die neueste Version zum Zeitpunkt der Entstehung dieses Artikels, arbeitet konfliktfrei mit früheren (oder künftigen) Versionen von XML. Der Code, den Sie heute mit MSXML 4.0 schreiben, kann also bis weit in die Zukunft verwendet werden, sofern auf den Computern Ihrer Benutzer MSXML 4.0 installiert ist.

MSXML 4.0 gibt es in drei Versionen:

  • msxml4.msi - installiert MSXML 4.0 auf Ihrem Computer.

  • msxml4msms.exe - setzt sich aus Windows Installer-Mergemodulen (MSM) und einem SDK zusammen, über die Sie MSXML 4.0 zusammen mit Ihren Office-Lösungen verteilen können.

  • msxml4cab.exe - ermöglicht das Installieren von MSXML 4.0 über das Internet.


Für diesen Artikel wird vorausgesetzt, dass Sie zum Entwickeln und Testen msxml4.msi auf Ihrem Computer installiert haben. Downloaden und installieren Sie MSXML 4.0 (in Englisch). Es gelten folgende Installationsstandards:

  • Die MSXML 4.0-DLL bzw. Microsoft XML V4.0 (msxml4.dll) wird im Ordner WINNT\system32 installiert (über den auch ein Verweis auf sie erstellt werden kann).

  • Weitere Unterstützung und Hilfedateien für MSXML 4.0 werden im Ordner C:\Programme\MSXML 4.0 installiert.

  • Auf Ihrem Desktop wird eine Verknüpfung zur Microsoft XML 4.0 Parser SDK-Hilfe installiert.

Erstellen eines Verweises auf die MSXML 4.0-DLL

Damit Sie programmtechnisch mit MSXML 4.0 arbeiten können, müssen Sie zunächst einen Verweis auf Microsoft XML V4.0 (msxml4.dll) einrichten:

  1. Zeigen Sie im Menü Extras des Office Visual-Basic®-Editors auf Verweise. Das Dialogfeld Verweise wird angezeigt.

  2. Aktivieren Sie das Kontrollkästchen neben Microsoft XML V4.0, und klicken Sie auf OK.


Sie können nun auf das XML DOM zugreifen, das ein Standardprogrammiermodell für die Verwendung von XML-Datendateien bereitstellt. Eine vollständige Beschreibung des XML DOM, das als Industriestandard gilt, finden Sie in der DOM-Spezifikation des World Wide Web Consortium (W3C) (in Englisch).

Arbeiten mit dem XML DOM

Das XML DOM stellt einen generischen Container bereit (den Knoten), der dazu verwendet werden kann, einzelne Teile von XML-Daten, wie Elemente, Attribute, Text, Kommentare, Verarbeitungsanweisungen, Entitäten usw., in einer XML-Datendatei darzustellen. Die folgenden Abschnitte enthalten Informationen zur Verwendung dieser einzelnen XML-Datenteile in XML-Datendateien.

Zugreifen auf XML-Datendateien

Das DOMDocument40-Objekt enthält alle Informationen in der XML-Datendatei und fungiert als Stammknoten für alle anderen in ihr enthaltenen Knoten. Die untergeordneten Knoten des Stammknotens werden in derselben Reihenfolge angezeigt wie in der XML-Datendatei.

Damit Sie auf die XML-Datendatei zugreifen können, müssen Sie eine neue Instanz des DOMDocument40-Objekts erstellen und für den Pfad der XML-Datendatei initialisieren. Der entsprechende Code sähe ungefähr folgendermaßen aus:

Public Sub GetXMLDOMDocument() 
    ' Zweck: Greift über einen festcodierten Dateipfad 
    ' auf eine XML-Datendatei zu.  
    ' Sie müssen einen Verweis auf Microsoft XML V4.0 einrichten, 
    ' bevor Sie diesen Code aufrufen. 
    Dim objDoc As MSXML2.DOMDocument40 
    Set objDoc = New MSXML2.DOMDocument40 
    ' XML über einen festcodierten Dateipfad laden. 
    objDoc.Load xmlSource:="C:\My XML\Employees.xml" 
    ' Ergebnisse im Direktfenster anzeigen. 
    Debug.Print objDoc.XML 
End Sub


Mit Hilfe des neuen FileDialog-Objekts in XP könnten Sie den XML-Datendateipfad dynamisch zur Laufzeit bestimmen. Der entsprechende Code sähe ungefähr folgendermaßen aus:

Public Sub GetXMLDOMDocumentUsingDynamicFilePath() 
    ' Zweck: Greift über einen dynamischen Dateipfad  
    ' auf eine XML-Datendatei zu.  
    ' Sie müssen einen Verweis auf Microsoft XML V4.0 einrichten 
    ' und den Code für die GetXMLFilePath()-Funktion einschließen, 
    ' bevor Sie diesen Code aufrufen. 
    Dim objDoc As MSXML2.DOMDocument40 
    Set objDoc = New MSXML2.DOMDocument40 
    ' XML über einen benutzerdefinierten Dateipfad laden. 
    objDoc.Load xmlSource:=GetXMLFilePath() 
    ' Ergebnisse im Direktfenster anzeigen. 
    Debug.Print objDoc.XML 
End Sub 
Public Function GetXMLFilePath() As String 
    ' Zweck: Ruft den Pfad zu einer ausgewählten XML-Datei ab.  
    ' Arbeitet nur im Kontext von Office XP-Anwendungen.  
    ' Verweis auf die Microsoft Office 10.0- 
    ' Objektbibliothek vor Aufruf dieses Codes einrichten. 
    Dim objDlg As Office.FileDialog 
    Const OPEN_BUTTON = -1 
    Set objDlg = Application.FileDialog _ 
        (FileDialogType:=msoFileDialogOpen) 
    ' Dialogfeld Datei > Öffnen anzeigen.  
    ' Nur Auswahl einer XML-Datei zulassen. 
    With objDlg 
        .AllowMultiSelect = False 
        .ButtonName = "Öffnen" 
        .Filters.Clear 
        .Filters.Add Description:="XML-Dateien", _ 
            Extensions:="*.xml" 
        .Title = "XML-Datei öffnen" 
        ' Wenn die Schaltfläche Öffnen ausgewählt wird, 
        ' Pfad an XML-Datei zurückgeben. 
        If .Show = OPEN_BUTTON Then 
            GetXMLFilePath = .SelectedItems(1) 
        End If 
    End With 
End Function


Ab hier können Sie mit dem Zugriff auf einzelne Teile der XML-Datendatei beginnen. Wenn Sie fertig sind, können Sie Ihre Ergebnisse entweder in der ursprünglichen oder in einer neuen XML-Datendatei speichern, indem Sie die save-Methode des DOMDocument40-Objekts aufrufen und einen Dateipfad zum Speichern der XML-Datendatei angeben.

Anmerkung: Das FileDialog-Objekt legt auch eine msoFileDialogSaveAs-Enumeration für die Verwendung des Dialogfelds Datei > Speichern unter offen, um den Speicherort, an dem die XML-Datendatei zur Laufzeit gespeichert werden soll, dynamisch zu bestimmen.

Arbeiten mit XML-Datenknoten

XML-Datendateien können Gruppen von XML-Datenknoten enthalten, auf die über die IXMLDOMNodeList-Auflistung zugegriffen werden kann. In jeder IXMLDOMNodeList-Auflistung kann über das IXMLDOMNode-Objekt auf die einzelnen XML-Datenknoten zugegriffen werden. Der entsprechende Code sieht ungefähr folgendermaßen aus:

Public Sub ListAllNodes() 
    ' Zweck: Listet alle Knoten in einer XML-Datendatei auf.  
    ' Sie müssen einen Verweis auf Microsoft XML V4.0 einrichten 
    ' und den Code für die GetXMLFilePath()-Funktion und die 
    ' GetChildNodes()-Unterroutine einschließen, bevor Sie diesen 
    ' Code aufrufen. 
    Dim objDoc As MSXML2.DOMDocument40 
    Dim objNode As MSXML2.IXMLDOMNode 
    Set objDoc = New MSXML2.DOMDocument40 
    ' XML über einen benutzerdefinierten Dateipfad laden. 
    objDoc.Load xmlSource:=GetXMLFilePath() 
    ' Namen und Datenwerte der einzelnen Knoten rekursiv auflisten. 
    Call GetChildNodes(nodeList:=objDoc.childNodes) 
End Sub 
Public Sub GetChildNodes(ByVal nodeList As MSXML2.IXMLDOMNodeList) 
    ' Zweck: Durchsucht die untergeordneten Knoten des  
    ' gesamten Knotens rekursiv und druckt alle ihre Namen und Datenwerte. 
    Dim objNode As IXMLDOMNode 
    For Each objNode In nodeList 
        ' Wenn untergeordnete Knoten vorhanden sind, 
        ' diese Unterroutine erneut aufrufen 
        If objNode.hasChildNodes = True Then 
            Call GetChildNodes(nodeList:=objNode.childNodes) 
        ' Wenn keine untergeordneten Knoten vorhanden sind,  
        ' Knotennamen und Knotenwert drucken. 
        Else 
            Debug.Print objNode.parentNode.nodeName & _ 
                ": " & objNode.nodeTypedValue 
        End If 
    Next objNode 
End Sub


Da jeder Knotentyp andere Zugriffsmethoden und Inhaltseinschränkungen verwendet, kann es in einigen Fällen einfacher sein, nicht mit dem generischen IXMLDOMNode-Objekt zu arbeiten, sondern mit Knoten, die zu einem bestimmten Typ gehören. Dazu müssen Sie mit XML-Datenelementen und -Attributen arbeiten, die das IXMLDOMElement-Objekt verwenden. Ebenso wie Elemente untergeordnete Elemente, Text, Kommentare, Verarbeitungsanweisungen, CDATA-Abschnitte und Entitätenverweise innerhalb von XML-Datendateien enthalten können, können IXMLDOMElement-Objekte IXMLDOMElement-, IXMLDOMText-, IXMLDOMComment-, IXMLDOMProcessingInstruction-, IXMLDOMCDATASection- und IXMLDOMEntityReference-Objekte enthalten. Auf Attribute wird über die Methoden getAttribute und setAttribute des IXMLDOMElement-Objekts zugegriffen. Außerdem können sie als IXMLDOMNamedNodeMap-Objekt über die attributes-Eigenschaft des IXMLDOMElement-Objekts geändert werden. Weitere Informationen zur Verwendung dieser Methoden und Objekte finden Sie in der MSXML 4.0 SDK-Hilfe.


© 2012 Microsoft. Alle Rechte vorbehalten. Nutzungsbedingungen | Markenzeichen | Informationen zur Datensicherheit
Page view tracker