操作方法:将内容控件绑定到数据存储区中的节点
XML 映射是 Word 的一项功能,可用于在文档和 XML 文件之间创建链接。 这在文档格式和自定义 XML 数据之间实现了真正的数据/视图分隔。
通过 XML 映射,您可以对文档所附加的自定义 XML 部件中的元素进行映射。 数据存储区提供了对打开文件中所存储的所有自定义 XML 部件的访问。 引用数据存储内任何自定义 XML 部件中的任何节点。
有关内容控件的详细信息,请参阅使用内容控件。
以下示例中所用对象如下:
- ContentControl
- ContentControls
- CustomXMLPart(Microsoft Office 核心对象模型)
- CustomXMLParts(Microsoft Office 核心对象模型)
- XMLMapping
示例
执行以下步骤,可将内容控件绑定到文档数据存储区中的节点。
- 创建要绑定到数据存储区中节点的内容控件。 内容控件是预定义的内容块。 内容控件有多种类型,包括文本块、下拉菜单、组合框、日历控件和图片。 您可以将这些内容控件映射到 XML 文件中的元素。 也可以通过 XML 路径语言 (XPath) 以编程方式将 XML 文件中的内容映射到内容控件。 因此,可以编写简短的应用程序来处理和修改文档中的数据。
有关内容控件的详细信息,请参阅使用内容控件。 以下代码示例创建一个纯文本内容控件,并将标题命名为“MyTitle”。
Dim strTitle As String
strTitle = "MyTitle"
Dim oContentControl As Word.ContentControl
Set oContentControl = ActiveDocument.ContentControls.Add(wdContentControlText)
oContentControl.Title = strTitle
- 在内容控件上设置 XML 映射。 Word 对象模型中文档中的数据存储包含在 Document 对象的 CustomXMLParts 属性中。 CustomXMLParts 属性返回包含 CustomXMLPart 对象的CustomXMLParts 集合。 它指向存储在文档中的所有自定义 XML 部件。
CustomXMLPart 对象表示数据存储中的单个自定义 XML 部件。 若要加载自定义 XML 数据,必须先使用 CustomXMLParts 集合的 Add 方法将新的自定义 XML 部件添加到 Document 对象。 这会向文档追加一个新的空自定义 XML 部件。 由于它为空,因此没有要映射到的 XML。
接下来,必须通过调用 CustomXMLPart 对象的 Load 方法、使用 XML 文件的有效路径作为参数,或者调用 CustomXMLPart 的 LoadXML 方法并直接传递 XML,将 XML 加载到新定义的部件中。 与 Word 文档一起存储的默认自定义 XML 部件包含文档的标准文档属性;不能删除这些部件。 始终可以通过调用自定义 XML 部件上的只读 XML 属性来查看该部件的内容。 如果调用 CustomXMLPart 对象的 XML 属性,则会返回一个字符串,其中包含该数据存储中的 XML。
生成有效的自定义 XML 文件并将其保存到硬盘驱动器。 将自定义 XML 部件添加到包含要映射到自定义 XML 数据的内容控件的文档。 假设内容控件将映射到以下示例自定义 XML 文件。
<?xml version="1.0" encoding="utf-8" ?>
<tree>
<fruit>
<fruitType>peach</fruitType>
<fruitType>pear</fruitType>
<fruitType>banana</fruitType>
</fruit>
</tree>
Now, suppose the content control is mapped to a <fruitType> node of the previous custom XML part.
以下示例代码演示如何将 XML 文件附加到文档,使其成为可用的数据存储项。
ActiveDocument.CustomXMLParts.Add
ActiveDocument.CustomXMLParts(ActiveDocument.CustomXMLParts.Count).Load ("c:\mySampleCustomXMLFile.xml")
若要创建 XML 映射,请使用 XPath 表达式指定要将内容控件映射到的自定义 XML 数据部件中的节点。 然后,在内容控件上设置 XML 映射会使用该 XPath 表达式指定添加的自定义 XML 部件中的节点。
在将自定义 XML 部件添加到文档 (并且自定义 XML 部件包含 XML) 之后,即可将其节点之一映射到内容控件。 为此,请使用 XMLMapping 对象的 SetMapping 方法 (ContentControl 对象的 XMLMapping 属性) ,将包含有效 XPath 的 String 传递给 ContentControl 对象。
下面是使用 XPath 执行此操作的示例,该 XPath 引用包含第一个 fruitType 元素的值的数据存储节点。
Dim strXPath As String
strXPath = "tree/fruit/fruitType[1]"
ActiveDocument.ContentControls(1).XMLMapping.SetMapping strXPath
如果省略可选的 PrefixMappings 和 CustomXMLPart 参数,则 Word 将按顺序搜索每个自定义 XML 部件,并将控件映射到使用指定 XPath 成功检索自定义 XML 节点的第一个部件。
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。