【发布时间】:2015-05-21 05:19:02
【问题描述】:
我正在使用以下代码遍历 Microsoft Word 文档中的所有书签:
foreach (var bookmark in _document.Range.Bookmarks.Cast<Bookmark>())
{
//code
}
如何确定bookmark 是否包含嵌套书签?我需要根据书签中是否有其他书签来执行一组单独的逻辑。
【问题讨论】:
标签: c# aspose aspose.words
我正在使用以下代码遍历 Microsoft Word 文档中的所有书签:
foreach (var bookmark in _document.Range.Bookmarks.Cast<Bookmark>())
{
//code
}
如何确定bookmark 是否包含嵌套书签?我需要根据书签中是否有其他书签来执行一组单独的逻辑。
【问题讨论】:
标签: c# aspose aspose.words
上面的 foreach 循环将获取 Bookmark 的所有实例。获取嵌套书签有点棘手,因为 Aspose.Words 中没有直接的 API 来执行此操作。
我已经写了一个程序来做这个,源代码并不小,所以我在Google Drive here分享Visual Studio项目。
以下是总结
foreach (var bookmark in wordDoc.Range.Bookmarks.Cast<Aspose.Words.Bookmark>())
{
Console.WriteLine(bookmark.Name);
// Get all the nodes between bookmark start and end
ArrayList extractedNodes = ExtractContent(bookmark.BookmarkStart, bookmark.BookmarkEnd, true);
for (int i = 0; i < extractedNodes.Count; i++)
{
// Skip first and last nodes
if (i == 0 || i == extractedNodes.Count - 1)
continue;
// See if there is any bookmarks in this node
Node node = (Node)extractedNodes[i];
if (node.Range.Bookmarks.Count > 0)
Console.WriteLine("Nested bookmark found");
}
}
ExtractContent()方法详情请访问http://www.aspose.com/docs/display/wordsnet/Extract+Content+Overview+and+Code
【讨论】: