Невозможно объединить содержимое документа XML из файлов Word 2010

Я использую элемент altChunkId для объединения файлов документов DOCX, но не могу увидеть содержимое элемента управления XML.

Я думаю, это связано с тем, что ссылка, для которой XML должен брать содержимое, находится в папке, в которую он был объединен, а не в самой папке.

В Word 2007 файл показывает содержимое элемента управления содержимым, а в Word 2010 он пуст.

Действия по воспроизведению:

  1. Открытое слово 2010.
  2. Перейдите на вкладку разработчика.
  3. Добавьте «Управление содержимым обычного текста».
  4. Сохранить как a.docx
  5. Создайте привязку XML с помощью Набор инструментов управления содержимым Word 2007
  6. Скопируйте a.docx в новый файл b.docx.
  7. Код для слияния:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.IO.Packaging;
    using System.Linq;
    using System.Text;
    using System.Xml;
    using DocumentFormat.OpenXml;
    using DocumentFormat.OpenXml.Packaging;
    using DocumentFormat.OpenXml.Spreadsheet;
    using DocumentFormat.OpenXml.Wordprocessing;
    
    class Class1
    {
        static void Main(string[] args)
        {
            string doc2 = @"b.docx";
            string doc1 = @"a.docx";
            using (var myDoc = WordprocessingDocument.Open(doc2, true))
            {
                string altChunkId = "AltChunkId1";
                var mainPart2 = myDoc.MainDocumentPart;
    
                var chunk = mainPart2.AddAlternativeFormatImportPart(
                AlternativeFormatImportPartType.WordprocessingML, altChunkId);
                using (var fileStream = File.Open(doc1, FileMode.Open))
                {
                    chunk.FeedData(fileStream);
                    AltChunk altChunk = new AltChunk();
                    altChunk.Id = altChunkId;
                    mainPart2.Document.Body.InsertAfter(altChunk, mainPart2.Document.Body.Elements<Paragraph>().Last());
                    mainPart2.Document.Save();
                }
            }
        }
    }
    
  8. Откройте b.docx в Word 2010, и вы увидите, что элемент управления текстовым содержимым пуст.

  9. Откройте b.docx в Word 2007, и вы увидите, что элемент управления текстовым содержимым НЕ пуст.

person deerdeer    schedule 29.08.2011    source источник
comment
Можете ли вы опубликовать b.docx где-нибудь, где мы можем посмотреть?   -  person JasonPlutext    schedule 01.09.2011
comment
Можете поделиться кодом и документами. Однако MS удалила поддержку пользовательского XML, поскольку вы используете элементы управления содержимым с привязкой к данным, что не должно быть проблемой.   -  person Atul Verma    schedule 24.07.2012