Объект XMLMapping (Word)
Представляет xml-сопоставление объекта ContentControl между пользовательским XML и элементом управления содержимым. Сопоставление XML — это связь между текстом в элементе управления содержимым и XML-элементом в пользовательском хранилище XML-данных для этого документа.
Используйте метод SetMapping для добавления или изменения сопоставления XML для элемента управления содержимым с помощью строки XPath. В следующем примере устанавливается встроенное свойство документа для автора документа, вставляется новый элемент управления содержимым в активный документ, а затем 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 , чтобы добавить или изменить сопоставление XML для элемента управления содержимым с помощью объекта CustomXMLNode . В следующем примере выполняется то же самое, что и в предыдущем примере, но используется метод 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 см. в соответствующих разделах об объектах.
Справочник по объектной модели Word
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.