Klasse XMLMapping - XML-Zuordnung (Word VBA)

Die Klasse XMLMapping stellt die XML-Zuordnung für ein ContentControl -Objekt zwischen benutzerdefiniertem XML und einem Inhaltssteuerelement dar. Um eine XMLMapping -Klassenvariable zu verwenden, muss sie zuerst instanziert werden, beispielsweise


Dim xml as XMLMapping
Set xml = ActiveDocument.Range.ContentControls(1).XMLMapping

CustomXMLNode

Gibt ein CUSTOMXMLNODE -Objekt zurück, das den benutzerdefinierten XML-Knoten im Datenspeicher darstellt, dem das Inhaltssteuerelement im Dokument zugeordnet ist.


Dim objCC As ContentControl 
Dim objPart As CustomXMLPart 
Dim objNode As CustomXMLNode 
Dim objMap As XMLMapping 
 
Set objCC = ActiveDocument.ContentControls.Add(wdContentControlText) 
Set objPart = ActiveDocument.CustomXMLParts.Add("" & _ 
 "" & _ 
 "") 
 
Set objMap = objCC.XMLMapping 
objMap.SetMapping "/books/book/author", , objPart 
 
Set objNode = objMap.CustomXMLNode 
objNode.Text = "Matt Hink" 
 
objCC.Range.Text = objNode.Text

CustomXMLPart

Gibt ein CustomXMLPart -Objekt zurück, das die benutzerdefinierte XML-Komponente darstellt, in der das Inhaltssteuerelement im Dokument zugeordnet wird.


Dim objCC As ContentControl 
Dim objPart As CustomXMLPart 
Dim objNode As CustomXMLNode 
 
Set objCC = ActiveDocument.ContentControls(1) 
Set objPart = objCC.XMLMapping.CustomXMLPart 
Set objNode = objPart.SelectSingleNode("/books/book/title") 
objNode.Text = "Mystery of the Empty Chair"

Delete

Löscht die XML-Zuordnung aus dem übergeordneten Inhaltssteuerelement.

Dieser Vorgang entfernt die XML-Zuordnung.


Dim objCC As ContentControl 
 
For Each objCC In ActiveDocument.ContentControls 
 If objCC.XMLMapping.IsMapped Then 
 objCC.XMLMapping.Delete 
 End If 
Next

IsMapped

Gibt einen Wert vom Typ Boolean zurück, der angibt, ob das Inhaltssteuerelement im Dokument einem XML-Knoten im XML-Datenspeicher des Dokuments zugeordnet ist.


Dim objCC As ContentControl 
 
For Each objCC In ActiveDocument.ContentControls 
 If objCC.XMLMapping.IsMapped Then 
 objCC.XMLMapping.Delete 
 End If 
Next

PrefixMappings

Gibt eine Zeichenfolge zurück, die die Präfixzuordnungen darstellt, die zum Auswerten des XPaths für die aktuelle XML-Zuordnung verwendet werden.

Verwenden Sie die SetMapping -Methode oder die SetMappingByNode -Methode, um die Zuordnung für ein Inhaltssteuerelement festzulegen.


Dim strPrefixMappings As String
strPrefixMappings = ActiveDocument.Range.ContentControls(1).XMLMapping.PrefixMappings

SetMapping

Ermöglicht das Erstellen oder Ändern der XML-Zuordnung für ein Inhaltssteuerelement.

Wenn die XML-Zuordnung bereits vorhanden ist, ersetzt Word die vorhandene XML-Zuordnung, und der Inhalt des neuen zugeordneten XML-Knotens ersetzt den Text des Inhaltssteuerelements. Siehe auch die SetMappingByNode -Methode.

SetMapping (XPath, PrefixMapping, Source)


Dim objRange As Range 
Dim objCustomPart As CustomXMLPart 
Dim objCustomControl As ContentControl 
 
Set objCustomPart = ActiveDocument.CustomXMLParts.Add 
objCustomPart.LoadXML ("Matt Hink" & _ 
 "Migration Paths of the Red Breasted Robin" & _ 
 "non-fiction29.95" & _ 
 "2/1/2007You see them in " & _ 
 "the spring outside your windows. You hear their lovely " & _ 
 "songs wafting in the warm spring air. Now follow the path " & _ 
 "of the red breasted robin as it migrates to warmer climes " & _ 
 "in the fall, and then back to your back yard in the spring." & _ 
 "") 
 
ActiveDocument.Range.InsertParagraphBefore 
Set objRange = ActiveDocument.Paragraphs(1).Range 
Set objCustomControl = ActiveDocument.ContentControls _ 
 .Add(wdContentControlText, objRange) 
objCustomControl.XMLMapping.SetMapping _ 
 "/books/book/title", , objCustomPart 
 
objRange.InsertParagraphAfter 
Set objRange = ActiveDocument.Paragraphs(2).Range 
Set objCustomControl = ActiveDocument.ContentControls _ 
 .Add(wdContentControlText, objRange) 
objCustomControl.XMLMapping.SetMapping _ 
 "/books/book/abstract", , objCustomPart

Arguments

Ein benanntes Argument

XPath (String) - Gibt eine XPath-Zeichenfolge an, die den XML-Knoten darstellt, dem das Inhaltssteuerelement zugeordnet werden soll.

Optional arguments

Die folgenden Argumente sind optional

PrefixMapping (String) - Gibt die Präfixzuordnungen an, die bei Abfragen des im Parameter XPath angegebenen Ausdrucks zu verwenden sind.

Source (Office.CustomXMLPart) - Gibt die gewünschten benutzerdefinierten XML-Daten an, denen das Inhaltssteuerelement zugeordnet werden soll.

SetMappingByNode

Ermöglicht das Erstellen oder Ändern der XML-Datenzuordnung für ein Inhaltssteuerelement.

Wenn die XML-Zuordnung bereits vorhanden ist, ersetzt Word die vorhandene XML-Zuordnung, und der Text des Inhaltssteuerelements wird durch den Inhalt des neu zugeordneten XML-Knotens ersetzt.

SetMappingByNode (Node)

Node: Gibt den XML-Knoten an, dem das aktuelle Inhaltssteuerelement zugeordnet werden soll.


Dim objcc As ContentControl 
Dim objNode As CustomXMLNode 
Dim objMap As XMLMapping 
Dim booMap As Boolean 
 
ActiveDocument.BuiltInDocumentProperties("Author").Value = "David Jaffe" 
 
Set objcc = ActiveDocument.ContentControls.Add _ 
 (wdContentControlDate, ActiveDocument.Paragraphs(1).Range) 
 
Set objNode = ActiveDocument.CustomXMLParts.SelectByNamespace _ 
 ("https://schemas.openxmlformats.org/package/2006/metadata/core-properties") _ 
 (1).DocumentElement.ChildNodes(1) 
 
Set objMap = objcc.XMLMapping 
booMap = objMap.SetMappingByNode(objNode)

XPath

Gibt einen Wert vom Typ String zurück, der den XPath für die XML-Zuordnung darstellt, der zum aktuell zugeordneten XML-Knoten ausgewertet wird.

Verwenden Sie die SetMapping -Methode oder die SetMappingByNode -Methode, um die Zuordnung für ein Inhaltssteuerelement festzulegen.


Dim objCC As ContentControl 
Dim objMap As XMLMapping 
Dim booMap As Boolean 
 
Set objCC = ActiveDocument.ContentControls(1) 
Set objMap = objCC.XMLMapping 
 
If (objCC.Type = wdContentControlDate) And (objMap.XPath <> _ 
 "/ns1:coreProperties[1]/ns0:createdate[1]") Then 
 booMap = objMap.SetMapping(XPath:="/ns1:coreProperties[1]/ns0:createdate[1]") 
 
 If booMap = False Then 
 MsgBox "Unable to map the content control." 
 End If 
End If