2013-07-17 41 views
3

我想下面將工作:如何從OpenXML docx文件中刪除書籤?

var bod = wordDoc.MainDocumentPart.Document.Body; 

foreach (var bookmark in bod.Descendants<BookmarkStart>()) 
{ 
    bookmark.Remove(); 
} 

foreach (var bookmark in bod.Descendants<BookmarkEnd>()) 
{ 
    bookmark.Remove(); 
} 

但是這會損壞文件。

+0

注意:您不能修改你迭代這似乎是你在這裏做什麼的集合。你也可以解釋**如何破壞文件? – Mgetz

+0

我不知道文檔是如何被破壞的,只是它是。這是我在嘗試打開它時從Word獲得的錯誤消息。它不提供更多信息。 – DaveDev

回答

0

嘗試增加

bookmark.RemoveAllChildren();

bookmark.Remove()

+0

不幸的是,這並沒有做任何事情 – DaveDev

5

試試這個,它的工作在我的文檔。

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(); 
0

簡單的解決方案:

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

工作不正常。 – t98907