Lire en anglais

Partager via


Objet XMLMapping (Word)

Représente le mappage XML sur un objet ContentControl entre des données XML personnalisées et un contrôle de contenu. Un mappage XML est un lien entre le texte d'un contrôle de contenu et un élément XML dans la banque de données XML personnalisée de ce document.

Remarques

Utilisez la méthode SetMapping pour ajouter ou modifier le mappage XML d'un contrôle de contenu à l'aide d'une chaîne XPath. L'exemple ci-dessous montre comment définir la propriété de document prédéfinie pour l'auteur du document, insérer un nouveau contrôle de contenu dans le document actif et définir le mappage XML du contrôle sur la propriété de document prédéfinie.

Dim objcc As ContentControl 
Dim objMap As XMLMapping 
Dim blnMap As Boolean 
 
ActiveDocument.BuiltInDocumentProperties("Author").Value = "David Jaffe" 
 
Set objcc = ActiveDocument.ContentControls.Add _ 
 (wdContentControlDate, ActiveDocument.Paragraphs(1).Range) 
 
Set objMap = objcc.XMLMapping 
blnMap = objMap.SetMapping(XPath:="/ns1:coreProperties[1]/ns0:createdate[1]") 
 
If blnMap = False Then 
 MsgBox "Unable to map the content control." 
End If

Utilisez la méthode SetMappingByNode pour ajouter ou modifier le mappage XML pour un contrôle de contenu à l'aide d'un objet CustomXMLNode. L'exemple suivant effectue les mêmes actions que l'exemple précédent, mais utilise la méthode SetMappingByNode.

Dim objcc As ContentControl 
Dim objNode As CustomXMLNode 
Dim objMap As XMLMapping 
Dim blnMap 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 
blnMap = objMap.SetMappingByNode(objNode)

L'exemple suivant crée un nouvel objet CustomXMLPart, charge la partie XML personnalisée dans ce code, puis crée deux nouveaux contrôles de contenu et est mappé à un élément XML différent au sein de la partie XML personnalisée.

Dim objRange As Range 
Dim objCustomPart As CustomXMLPart 
Dim objCustomControl As ContentControl 
Dim objCustomNode As CustomXMLNode 
 
Set objCustomPart = ActiveDocument.CustomXMLParts.Add 
objCustomPart.LoadXML ("<books><book><author>Matt Hink</author>" & _ 
 "<title>Migration Paths of the Red Breasted Robin</title>" & _ 
 "<genre>non-fiction</genre><price>29.95</price>" & _ 
 "<pub_date>2/1/2007</pub_date><abstract>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." & _ 
 "</abstract></book></books>") 
 
ActiveDocument.Range.InsertParagraphBefore 
Set objRange = ActiveDocument.Paragraphs(1).Range 
Set objCustomNode = objCustomPart.SelectSingleNode _ 
 ("/books/book/title") 
Set objCustomControl = ActiveDocument.ContentControls _ 
 .Add(wdContentControlText, objRange) 
objCustomControl.XMLMapping.SetMappingByNode objCustomNode 
 
objRange.InsertParagraphAfter 
Set objRange = ActiveDocument.Paragraphs(2).Range 
Set objCustomNode = objCustomPart.SelectSingleNode _ 
 ("/books/book/abstract") 
Set objCustomControl = ActiveDocument.ContentControls _ 
 .Add(wdContentControlText, objRange) 
objCustomControl.XMLMapping.SetMappingByNode objCustomNode 
 
MsgBox objCustomControl.XMLMapping.IsMapped

Utilisez la méthode Delete pour supprimer le mappage XML du contrôle de contenu. Supprimer le mappage XML d'un contrôle de contenu revient à supprimer uniquement la connexion entre le contrôle de contenu et les données XML. Le contrôle de contenu et les données XML restent dans le document. L'exemple ci-dessous montre comment supprimer le mappage XML pour tous les contrôles de contenu du document actif qui sont actuellement mappés.

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

Utilisez la propriété IsMapped pour déterminer si un contrôle de contenu est mappé à un nœud XML dans la banque de données du document. L'exemple ci-dessous montre comment supprimer le mappage XML pour tous les contrôles de contenus mappés du document actif.

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

Utilisez la propriété CustomXMLNode pour accéder au nœud XML auquel un contrôle de contenu est mappé. Utilisez la propriété CustomXMLPart pour accéder à la partie XML sur laquelle est mappé un contrôle de contenu. Pour plus d'informations sur l'utilisation de l'objet CustomXMLNode et objets CustomXMLPart, voir les rubriques de l'objet respectifs.

Voir aussi

Référence du modèle objet Word

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.