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-fiction 29.95 " & _
"2/1/2007 You 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