Поделиться через


Объект 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 и обратная связь.