BookmarkStart Class

Represents a start of a bookmark in a Word document.
Inheritance Hierarchy

Namespace:  Aspose.Words
Assembly:  Aspose.Words (in Aspose.Words.dll) Version: 20.2
public class BookmarkStart : Node

The BookmarkStart type exposes the following members.

Public methodCode exampleBookmarkStart
Initializes a new instance of the BookmarkStart class.
Public propertyCode exampleBookmark
Gets the facade object that encapsulates this bookmark start and end.
Public propertyCode exampleDocument
Gets the document to which this node belongs.
(Inherited from Node.)
Public propertyCode exampleIsComposite
Returns true if this node can contain other nodes.
(Inherited from Node.)
Public propertyCode exampleName
Gets or sets the bookmark name.
Public propertyCode exampleNextSibling
Gets the node immediately following this node.
(Inherited from Node.)
Public propertyCode exampleNodeType
Returns BookmarkStart.
(Overrides NodeNodeType.)
Public propertyCode exampleParentNode
Gets the immediate parent of this node.
(Inherited from Node.)
Public propertyCode examplePreviousSibling
Gets the node immediately preceding this node.
(Inherited from Node.)
Public propertyCode exampleRange
Returns a Range object that represents the portion of a document that is contained in this node.
(Inherited from Node.)
Public methodCode exampleAccept
Accepts a visitor.
(Overrides NodeAccept(DocumentVisitor).)
Public methodCode exampleClone (Inherited from Node.)
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodCode exampleGetAncestor(Type)
Gets the first ancestor of the specified object type.
(Inherited from Node.)
Public methodCode exampleGetAncestor(NodeType)
Gets the first ancestor of the specified NodeType.
(Inherited from Node.)
Public methodGetHashCode (Inherited from Object.)
Public methodCode exampleGetText
Returns an empty string.
(Overrides NodeGetText.)
Public methodGetType (Inherited from Object.)
Protected methodMemberwiseClone (Inherited from Object.)
Public methodCode exampleNextPreOrder
Gets next node according to the pre-order tree traversal algorithm.
(Inherited from Node.)
Public methodCode examplePreviousPreOrder
Gets the previous node according to the pre-order tree traversal algorithm.
(Inherited from Node.)
Public methodCode exampleRemove
Removes itself from the parent.
(Inherited from Node.)
Public methodToString (Inherited from Object.)
Public methodCode exampleToString(SaveFormat)
Exports the content of the node into a string in the specified format.
(Inherited from Node.)
Public methodCode exampleToString(SaveOptions)
Exports the content of the node into a string using the specified save options.
(Inherited from Node.)

A complete bookmark in a Word document consists of a BookmarkStart and a matching BookmarkEnd with the same bookmark name.

BookmarkStart and BookmarkEnd are just markers inside a document that specify where the bookmark starts and ends.

Use the Bookmark class as a "facade" to work with a bookmark as a single object.

Shows how to add bookmarks and update their contents.
public void CreateUpdateAndPrintBookmarks()
    // Create a document with 3 bookmarks: "MyBookmark 1", "MyBookmark 2", "MyBookmark 3"
    Document doc = CreateDocumentWithBookmarks();
    BookmarkCollection bookmarks = doc.Range.Bookmarks;

    // Check that we have 3 bookmarks
    Assert.AreEqual(3, bookmarks.Count);

    // Look at initial values of our bookmarks

    // Obtain bookmarks from a bookmark collection by index/name and update their values
    bookmarks[0].Name = "Updated name of " + bookmarks[0].Name;
    bookmarks["MyBookmark 2"].Text = "Updated text content of " + bookmarks[1].Name;
    // Remove the latest bookmark
    // The bookmarked text is not deleted

    bookmarks = doc.Range.Bookmarks;
    // Check that we have 2 bookmarks after the latest bookmark was deleted
    Assert.AreEqual(2, bookmarks.Count);

    // Look at updated values of our bookmarks

/// <summary>
/// Create a document with bookmarks using the start and end nodes.
/// </summary>
private static Document CreateDocumentWithBookmarks()
    DocumentBuilder builder = new DocumentBuilder();
    Document doc = builder.Document;

    // An empty document has just one empty paragraph by default
    Paragraph p = doc.FirstSection.Body.FirstParagraph;

    // Add several bookmarks to the document
    for (int i = 1; i <= 3; i++)
        string bookmarkName = "MyBookmark " + i;

        p.AppendChild(new Run(doc, "Text before bookmark."));

        p.AppendChild(new BookmarkStart(doc, bookmarkName));
        p.AppendChild(new Run(doc, "Text content of " + bookmarkName));
        p.AppendChild(new BookmarkEnd(doc, bookmarkName));

        p.AppendChild(new Run(doc, "Text after bookmark.\r\n"));

    return builder.Document;

/// <summary>
/// Use an iterator and a visitor to print info of every bookmark from within a document.
/// </summary>
private static void PrintAllBookmarkInfo(BookmarkCollection bookmarks)
    // Create a DocumentVisitor
    BookmarkInfoPrinter bookmarkVisitor = new BookmarkInfoPrinter();

    // Get the enumerator from the document's BookmarkCollection and iterate over the bookmarks
    using (IEnumerator<Bookmark> enumerator = bookmarks.GetEnumerator())
        while (enumerator.MoveNext())
            Bookmark currentBookmark = enumerator.Current;

            // Accept our DocumentVisitor it to print information about our bookmarks
            if (currentBookmark != null)

                // Prints a blank line

/// <summary>
/// Visitor that prints bookmark information to the console.
/// </summary>
public class BookmarkInfoPrinter : DocumentVisitor
    public override VisitorAction VisitBookmarkStart(BookmarkStart bookmarkStart)
        Console.WriteLine("BookmarkStart name: \"{0}\", Content: \"{1}\"", bookmarkStart.Name,
        return VisitorAction.Continue;

    public override VisitorAction VisitBookmarkEnd(BookmarkEnd bookmarkEnd)
        Console.WriteLine("BookmarkEnd name: \"{0}\"", bookmarkEnd.Name);
        return VisitorAction.Continue;
See Also