Clase XMLMapping - asignación XML (Word VBA)

La clase XMLMapping representa la asignación XML en un objeto ContentControl entre código XML personalizado y un control de contenido. Para usar una variable de clase XMLMapping, primero debe ser instanciado, por ejemplo


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

CustomXMLNode

Devuelve un objeto CustomXMLNode que representa el nodo XML personalizado del almacén de datos al que se asigna el control de contenido del documento.


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

Devuelve un objeto CustomXMLPart que representa el fragmento XML personalizado al que se asigna el control de contenido del documento.


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

Elimina la asignación XML del control de contenido principal.

Esta operación elimina la asignación XML.


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

IsMapped

Devuelve un valor Boolean que indica si el control de contenido del documento está asignado a un nodo XML en el almacén de datos XML del documento.


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

PrefixMappings

Devuelve una cadena que representa las asignaciones de prefijo utilizadas para evaluar el XPath de la asignación XML actual.

Para establecer la asignación de un control de contenido, utilice el método SetMapping o SetMappingByNode.


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

SetMapping

Permite crear o cambiar la asignación XML en un control de contenido.

Si ya existe la asignación XML, Word la reemplaza y el contenido del nuevo nodo XML asignado reemplaza el texto del control de contenido. Vea también el método 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-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

Un argumento con nombre

XPath (String) - Especifica una cadena XPath que representa el nodo XML al que se asignará el control de contenido.

Optional arguments

Los siguientes argumentos son opcionales

PrefixMapping (String) - Especifica las asignaciones de prefijo que se van a usar al consultar la expresión proporcionada en el parámetro XPath.

Source (Office.CustomXMLPart) - Especifica los datos XML personalizados deseados al que se asignará el control de contenido.

SetMappingByNode

Permite crear o cambiar la asignación de datos XML en un control de contenido.

Si ya existe la asignación XML, Word la reemplazará, y el contenido del nuevo nodo XML asignado reemplazará el texto del control de contenido.

SetMappingByNode (Node)

Node: Especifica el nodo XML al que se asignará el control de contenido actual.


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

Devuelve una cadena que representa la expresión XPath para la asignación XML, que da como resultado el nodo XML actualmente asignado.

Para establecer la asignación de un control de contenido, utilice el método SetMapping o 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