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-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 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