Classe XMLMapping - mappage XML (Word VBA)
La classe XMLMapping représente le mappage XML sur un objet ContentControl entre des données XML personnalisées et un contrôle de contenu. Pour utiliser une variable de classe XMLMapping, elle doit d'abord être instanciée, par exemple
Dim xml as XMLMapping
Set xml = ActiveDocument.Range.ContentControls(1).XMLMapping
CustomXMLNode
Renvoie un objet CustomXMLNode qui représente le nœud XML personnalisé dans la Banque de données sur laquelle le contrôle de contenu du document est mappé.
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
Renvoie un objet CustomXMLPart qui représente la partie XML personnalisée sur laquelle le contrôle de contenu du document est mappé.
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
Supprime le mappage XML du contrôle de contenu parent.
Cette opération permet de supprimer le mappage XML.
Dim objCC As ContentControl
For Each objCC In ActiveDocument.ContentControls
If objCC.XMLMapping.IsMapped Then
objCC.XMLMapping.Delete
End If
Next
IsMapped
Renvoie une valeur de type Boolean qui indique si le contrôle de contenu du document est mappé à un nœud XML dans le magasin de données XML du document.
Dim objCC As ContentControl
For Each objCC In ActiveDocument.ContentControls
If objCC.XMLMapping.IsMapped Then
objCC.XMLMapping.Delete
End If
Next
PrefixMappings
Renvoie une chaîne qui représente les mappages de préfixes utilisés pour évaluer le XPath pour le mappage XML actuel.
Pour définir le mappage d'un contrôle de contenu, utilisez la méthode SetMapping ou SetMappingByNode.
Dim strPrefixMappings As String
strPrefixMappings = ActiveDocument.Range.ContentControls(1).XMLMapping.PrefixMappings
SetMapping
Permet de créer ou modifier le mappage XML sur un contrôle de contenu.
Si le mappage XML existe déjà, Word remplace le mappage XML existant et le contenu du nouveau nœud XML mappé remplace le texte du contrôle de contenu. Voir aussi la méthode SetMappingByNode.
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
Un argument nommé
XPath (String) - Spécifie une chaîne XPath qui représente le nœud XML sur lequel mapper le contrôle de contenu.
Optional arguments
Les arguments suivants sont facultatifs
PrefixMapping (String) - Spécifie des mappages de préfixes à utiliser lors de la demande de l'expression fournie dans le paramètre XPath.
Source (Office.CustomXMLPart) - Spécifie les données XML personnalisées souhaitées sur lequel mapper le contrôle de contenu.
SetMappingByNode
Permet de créer ou modifier le mappage de données XML dans un contrôle de contenu.
Si le mappage XML existe déjà, Word remplace le mappage XML existant et le contenu du nouveau nœud XML mappé remplace le texte du contrôle de contenu.
SetMappingByNode (Node)
Node: Spécifie le nœud XML sur lequel mapper le contrôle de contenu actif.
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
Renvoie une chaîne qui représente le XPath du mappage XML, qui prend la valeur du nœud XML actuellement mappé.
Pour définir le mappage d'un contrôle de contenu, utilisez la méthode SetMapping ou SetMappingByNode.
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