使用英语阅读

通过


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 的部分。 有关使用 CustomXMLNodeCustomXMLPart 对象的详细信息,请参阅各个对象主题。

另请参阅

Word 对象模型参考

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。