Compartir a través de


Objeto XMLMapping (Word)

Representa la asignación XML en un objeto ContentControl entre código XML personalizado y un control de contenido. Una asignación XML es un vínculo entre el texto de un control de contenido y un elemento XML del almacén de datos XML personalizado para este documento.

Comentarios

Utilice el método SetMapping para agregar o cambiar la asignación XML para un control de contenido mediante una cadena XPath. En el ejemplo siguiente, se establece la propiedad de documento integrada del autor del documento, se inserta un nuevo control de contenido en el documento activo y, a continuación, se establece la asignación XML para el control en la propiedad de documento integrada.

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

Utilice el método SetMappingByNode para agregar o cambiar la asignación XML para un control de contenido mediante un objeto CustomXMLNode. En el siguiente ejemplo hace lo mismo que el ejemplo anterior, pero utiliza el método 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)

El ejemplo siguiente crea un nuevo objeto CustomXMLPart, carga XML personalizados en él y, a continuación, crea dos nuevos controles de contenido y asigna cada uno a un elemento XML distinto dentro del XML personalizado.

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

Utilice el método Delete para eliminar la asignación XML para un control de contenido. Tenga en cuenta que, si elimina la asignación XML para un control de contenido, sólo se eliminará la conexión entre éste y los datos XML. Tanto el control de contenido como los datos XML permanecerán en el documento. En el siguiente ejemplo, se elimina la asignación XML de todos los controles de contenido del documento activo que se encuentran asociados actualmente.

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

Utilice la propiedad IsMapped para determinar si un control de contenido está asignado a un nodo XML en el almacén de datos del documento. En el siguiente ejemplo, se elimina la asignación XML para todos los controles de contenido asignados en el documento activo.

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

Utilice la propiedad CustomXMLNode para tener acceso al nodo XML al que se asigna un control de contenido. Utilice la propiedad CustomXMLPart para tener acceso al elemento XML al que se asigna un control de contenido. Para obtener más información sobre cómo trabajar con CustomXMLNode y objetos CustomXMLPart, vea los temas de objetos respectivos.

Vea también

Referencia de modelos de objetos de Word

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.