Word) (XMLMapping 对象
表示 ContentControl 对象上自定义 XML 与内容控件之间的 XML 映射。 XML 映射是内容控件中的文本与此文档的自定义 XML 数据存储中的 XML 元素之间的链接。
使用 SetMapping 方法可以添加或更改使用 XPath 字符串的内容控件的 XML 映射。 以下示例设置文档作者这一内置文档属性,在活动文档中插入新的内容控件,然后将此控件的 XML 映射设置为该内置文档属性。
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
使用 SetMappingByNode 方法来添加或更改内容控件使用 CustomXMLNode 对象的 XML 映射。 下面的示例执行与前面的示例相同的操作,但使用 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)
下面的示例创建一个新的 CustomXMLPart 对象、 将自定义 XML 加载到它,然后创建两个新的内容控件,并将每个不同的 XML 元素中的自定义 XML 映射。
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
使用 Delete 方法可以删除内容控件的 XML 映射。 删除内容控件的 XML 映射时,只会删除内容控件与 XML 数据之间的连接。 内容控件和 XML 数据都会留在文档中。 以下示例删除活动文档内当前映射的所有内容控件的 XML 映射。
Dim objCC As ContentControl
For Each objCC In ActiveDocument.ContentControls
If objCC.XMLMapping.IsMapped Then
objCC.XMLMapping.Delete
End If
Next
使用 IsMapped 属性可以确定内容控件是否映射到文档的数据存储中的 XML 节点。 以下示例删除活动文档中所有映射的内容控件的 XML 映射。
Dim objCC As ContentControl
For Each objCC In ActiveDocument.ContentControls
If objCC.XMLMapping.IsMapped Then
objCC.XMLMapping.Delete
End If
Next
使用 CustomXMLNode 属性来访问内容控件要映射到的 XML 节点。 使用 CustomXMLPart 属性来访问内容控件映射到 XML 的部分。 有关使用 CustomXMLNode 和 CustomXMLPart 对象的详细信息,请参阅各个对象主题。
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。