Объединение нескольких текстовых документов ‹Body› (xml) в 1 документ

У меня есть несколько тегов <body> из документа Word. Я делаю это с открытым xml sdk. Таким образом, новый документ должен быть сгенерирован с помощью openxml.

Тело происходит от

WordprocessingDocument.Open("C:\Temp\Test.docx").MainDocumentPart.Document.Body.OuterXml

У меня так разные тела в списке. Со всеми разными значениями. Изменил некоторый текст в xml. И сохранил их в новый список.

Теперь этот список должен быть в новом текстовом документе. Как я могу это сделать? Я попробовал altChunk. Но мой текстовый документ всегда поврежден.

Кто-нибудь, кто может мне помочь?


person Sven    schedule 31.08.2010    source источник
comment
Я управляю этим с помощью altChunk — опубликуйте свой код altChunk, и мы посмотрим.   -  person Shaneo    schedule 16.09.2010


Ответы (2)


Вы можете создать WordDocument с помощью sdk. я думаю что это

WordProcessingDocument.Create("path_and_name_with_.docx").MainDocumentPart.Document.append(yourBodyList);

Вы также можете взять получившиеся документы, которые не работают, и просмотреть их XML с помощью инструмента SDK или просто переименовать документ в расширение .zip и посмотреть, почему он не работает.

person Ingó Vals    schedule 16.09.2010
comment
Это работает так. Но я поместил все тело в документ в 1 слово. Но я решил это, создав больше документов - person Sven; 17.09.2010
comment
Я верю, что в документе может быть только одно тело. Но вы можете удалить абзацы из других тел и добавить их все в тело нового документа. - person Ingó Vals; 20.02.2011

Эта функция вызовет исключение, если вы добавляете свой bodylist из другого документа без клонирования. Мы должны использовать CloneNode(deep:true) для каждого элемента тела.

WordProcessingDocument.Create("path_and_name_with_.docx").MainDocumentPart.Document.append(yourBodyList); Это может вызвать исключение. Обратитесь к этому сообщению: Не удается вставить OpenXmlElement newChild, потому что он является частью дерева

CloneNode(true) создаст клон элемента без каких-либо ссылок или ссылок на родителя. И для вашей проблемы с несколькими телами. получить дочерние элементы каждого тела и добавить их в новый элемент Body(). Надеюсь это поможет!

person Mohamed Alikhan    schedule 10.01.2014