如何从OpenXML docx文件中删除书签

本文关键字:删除 书签 文件 docx OpenXML | 更新日期: 2023-09-27 18:22:46

我认为以下方法可行:

var bod = wordDoc.MainDocumentPart.Document.Body;
foreach (var bookmark in bod.Descendants<BookmarkStart>())
{
    bookmark.Remove();
}
foreach (var bookmark in bod.Descendants<BookmarkEnd>())
{
    bookmark.Remove();
}

但这会破坏文件。

如何从OpenXML docx文件中删除书签

试试这个,它在我的文档上起了作用。

var bs = wordDoc.MainDocumentPart.Document
             .Descendants<BookmarkStart>()
             .ToList();
        foreach (var s in bs)
            s.Remove();
var be = wordDoc.MainDocumentPart.Document
             .Descendants<BookmarkEnd>()
             .ToList();
        foreach (var e in be)
            e.Remove();

尝试添加

bookmark.RemoveAllChildren();

之前

bookmark.Remove()

简单的解决方案:

wordDoc.MainDocumentPart.Document.RemoveAllChildren<BookmarkStart>();
wordDoc.MainDocumentPart.Document.RemoveAllChildren<BookmarkEnd>();