C# 在c中删除Word书签中的内容#

C# 在c中删除Word书签中的内容#,c#,asp.net,openxml,C#,Asp.net,Openxml,我正在从事一个ASP C#项目,该项目必须隐藏带有书签的Word文档的部分,其中包含大量的表。我们采用的第一种方法是删除每个标记的父元素,它可以工作,但需要标记行,这些行中没有数据,并在最终文档中保留前面的空白(例如,如果一个页面有两个部分,而您删除了上面的一个部分,则会得到一半的空白和下面的部分) 因此,我们现在尝试的是为每个文档节添加一个书签,然后将其全部删除。到目前为止,我们试图做到这一点的是 BookmarkStart myBookMarkStart=OpenWordDocument.M

我正在从事一个ASP C#项目,该项目必须隐藏带有书签的Word文档的部分,其中包含大量的表。我们采用的第一种方法是删除每个标记的父元素,它可以工作,但需要标记行,这些行中没有数据,并在最终文档中保留前面的空白(例如,如果一个页面有两个部分,而您删除了上面的一个部分,则会得到一半的空白和下面的部分)

因此,我们现在尝试的是为每个文档节添加一个书签,然后将其全部删除。到目前为止,我们试图做到这一点的是

BookmarkStart myBookMarkStart=OpenWordDocument.MainDocumentPart.Document.Body.subjections().FirstOrDefault(x=>x.Name==myBookMarkName);
OpenXmlElement sibling=myBookMarkStart.NextSibling();
而(!(兄弟姐妹是书签结尾))
{
var temp=兄弟姐妹;
sibling=sibling.NextSibling();
移除温度();
}

但是,这不会删除书签开始和结束中的任何内容。

该方法假定这两个书签之间没有其他书签,只删除段落。
BookmarkStart myBookMarkStart = OpenWordDocument.MainDocumentPart.Document.Body.Descendants<BookmarkStart>().FirstOrDefault(x => x.Name == myBookMarkName);
OpenXmlElement sibling = myBookMarkStart.NextSibling();
while (!(sibling is BookmarkEnd))
{
    var temp = sibling;
    sibling = sibling.NextSibling();
    temp.Remove();
}