BuildingBlock

BuildingBlock class

Stellt einen Glossardokumenteintrag dar, z. B. einen Baustein-, AutoText- oder AutoKorrektur-Eintrag.

Um mehr zu erfahren, besuchen Sie dieAspose.Words Dokumentobjektmodell (DOM) Dokumentationsartikel.

public class BuildingBlock : CompositeNode

Konstrukteure

NameBeschreibung
BuildingBlock(GlossaryDocument)Initialisiert eine neue Instanz dieser Klasse.

Eigenschaften

NameBeschreibung
Behavior { get; set; }Gibt das Verhalten an, das angewendet werden soll, wenn der Inhalt des Bausteins in das Hauptdokument eingefügt wird.
Category { get; set; }Gibt die Kategorisierung der zweiten Ebene für den Baustein an.
Count { get; }Ruft die Anzahl der unmittelbar untergeordneten Elemente dieses Knotens ab.
CustomNodeId { get; set; }Gibt die benutzerdefinierte Knotenkennung an.
Description { get; set; }Ruft die mit diesem Baustein verknüpfte Beschreibung ab oder legt sie fest.
virtual Document { get; }Ruft das Dokument ab, zu dem dieser Knoten gehört.
FirstChild { get; }Ruft das erste untergeordnete Element des Knotens ab.
FirstSection { get; }Ruft den ersten Abschnitt im Baustein ab.
Gallery { get; set; }Gibt die Kategorisierung der ersten Ebene für den Baustein zum Zwecke der Klassifizierung oder der Sortierung der Benutzeroberfläche an.
Guid { get; set; }Ruft einen Bezeichner (eine 128-Bit-GUID) ab oder legt ihn fest, der diesen Baustein eindeutig identifiziert.
HasChildNodes { get; }RückgabenWAHR wenn dieser Knoten untergeordnete Knoten hat.
override IsComposite { get; }RückgabenWAHR da dieser Knoten untergeordnete Knoten haben kann.
LastChild { get; }Ruft das letzte untergeordnete Element des Knotens ab.
LastSection { get; }Ruft den letzten Abschnitt im Baustein ab.
Name { get; set; }Ruft den Namen dieses Bausteins ab oder legt ihn fest.
NextSibling { get; }Ruft den Knoten ab, der diesem Knoten unmittelbar folgt.
override NodeType { get; }Gibt dieBuildingBlock Wert.
ParentNode { get; }Ruft den unmittelbar übergeordneten Knoten dieses Knotens ab.
PreviousSibling { get; }Ruft den Knoten ab, der diesem Knoten unmittelbar vorausgeht.
Range { get; }Gibt einenRangeObjekt, das den Teil eines Dokuments darstellt, der in diesem Knoten enthalten ist.
Sections { get; }Gibt eine Sammlung zurück, die alle Abschnitte im Baustein darstellt.
Type { get; set; }Gibt den Bausteintyp an.

Methoden

NameBeschreibung
override Accept(DocumentVisitor)Nimmt einen Besucher auf.
override AcceptEnd(DocumentVisitor)Akzeptiert einen Besucher für den Besuch des Endes des BuildingBlocks.
override AcceptStart(DocumentVisitor)Akzeptiert einen Besucher für den Besuch des Anfangs des BuildingBlocks.
AppendChild<T>(T)Fügt den angegebenen Knoten am Ende der Liste der untergeordneten Knoten für diesen Knoten hinzu.
Clone(bool)Erstellt ein Duplikat des Knotens.
CreateNavigator()Erstellt einen Navigator, der zum Durchlaufen und Lesen von Knoten verwendet werden kann.
GetAncestor(NodeType)Ruft den ersten Vorfahren des angegebenenNodeType .
GetAncestor(Type)Ruft den ersten Vorgänger des angegebenen Objekttyps ab.
GetChild(NodeType, int, bool)Gibt einen N-ten untergeordneten Knoten zurück, der dem angegebenen Typ entspricht.
GetChildNodes(NodeType, bool)Gibt eine Live-Sammlung von untergeordneten Knoten zurück, die dem angegebenen Typ entsprechen.
GetEnumerator()Bietet Unterstützung für die Iteration des For-Each-Stils über die untergeordneten Knoten dieses Knotens.
override GetText()Ruft den Text dieses Knotens und aller seiner untergeordneten Knoten ab.
IndexOf(Node)Gibt den Index des angegebenen untergeordneten Knotens im untergeordneten Knoten-Array zurück.
InsertAfter<T>(T, Node)Fügt den angegebenen Knoten unmittelbar nach dem angegebenen Referenzknoten ein.
InsertBefore<T>(T, Node)Fügt den angegebenen Knoten unmittelbar vor dem angegebenen Referenzknoten ein.
NextPreOrder(Node)Ruft den nächsten Knoten gemäß dem Pre-Order-Tree-Traversal-Algorithmus ab.
PrependChild<T>(T)Fügt den angegebenen Knoten am Anfang der Liste der untergeordneten Knoten für diesen Knoten hinzu.
PreviousPreOrder(Node)Ruft den vorherigen Knoten gemäß dem Pre-Order-Tree-Traversal-Algorithmus ab.
Remove()Entfernt sich selbst vom übergeordneten Element.
RemoveAllChildren()Entfernt alle untergeordneten Knoten des aktuellen Knotens.
RemoveChild<T>(T)Entfernt den angegebenen untergeordneten Knoten.
RemoveSmartTags()Entfernt alleSmartTag Nachkommenknoten des aktuellen Knotens.
SelectNodes(string)Wählt eine Liste von Knoten aus, die dem XPath-Ausdruck entsprechen.
SelectSingleNode(string)Wählt den erstenNode das dem XPath-Ausdruck entspricht.
ToString(SaveFormat)Exportiert den Inhalt des Knotens in eine Zeichenfolge im angegebenen Format.
ToString(SaveOptions)Exportiert den Inhalt des Knotens unter Verwendung der angegebenen Speicheroptionen in eine Zeichenfolge.

Bemerkungen

BuildingBlock kann nur enthaltenSection Knoten.

BuildingBlock kann nur ein Kind sein vonGlossaryDocument.

Sie können neue Bausteine erstellen und in ein Glossardokument einfügen. Sie können vorhandene Bausteine ändern oder löschen. Sie können Bausteine zwischen Dokumenten kopieren oder verschieben. Sie können den Inhalt eines Bausteins in ein Dokument einfügen.

Entspricht demdocPart ,docPartPr UnddocPartBodyElemente in OOXML.

Beispiele

Zeigt, wie einem Dokument ein benutzerdefinierter Baustein hinzugefügt wird.

public void CreateAndInsert()
{
    // Das Glossardokument eines Dokuments speichert Bausteine.
    Document doc = new Document();
    GlossaryDocument glossaryDoc = new GlossaryDocument();
    doc.GlossaryDocument = glossaryDoc;

    // Erstellen Sie einen Baustein, benennen Sie ihn und fügen Sie ihn dann dem Glossardokument hinzu.
    BuildingBlock block = new BuildingBlock(glossaryDoc)
    {
        Name = "Custom Block"
    };

    glossaryDoc.AppendChild(block);

    // Alle neuen Baustein-GUIDs haben standardmäßig denselben Nullwert und wir können ihnen einen neuen eindeutigen Wert zuweisen.
    Assert.AreEqual("00000000-0000-0000-0000-000000000000", block.Guid.ToString());

    block.Guid = Guid.NewGuid();

    // Die folgenden Eigenschaften kategorisieren Bausteine
    // Im Menü können wir in Microsoft Word über „Einfügen“ -> „Schnellbausteine“ -> „Baustein-Organizer“ darauf zugreifen.
    Assert.AreEqual("(Empty Category)", block.Category);
    Assert.AreEqual(BuildingBlockType.None, block.Type);
    Assert.AreEqual(BuildingBlockGallery.All, block.Gallery);
    Assert.AreEqual(BuildingBlockBehavior.Content, block.Behavior);

    // Bevor wir diesen Baustein zu unserem Dokument hinzufügen können, müssen wir ihm einen Inhalt geben,
    // Dies tun wir mithilfe eines Dokumentbesuchers. Dieser Besucher legt auch eine Kategorie, eine Galerie und ein Verhalten fest.
    BuildingBlockVisitor visitor = new BuildingBlockVisitor(glossaryDoc);
    // Besuchen Sie den Anfang/das Ende des BuildingBlocks.
    block.Accept(visitor);

    // Wir können auf den Block zugreifen, den wir gerade aus dem Glossardokument erstellt haben.
    BuildingBlock customBlock = glossaryDoc.GetBuildingBlock(BuildingBlockGallery.QuickParts,
        "My custom building blocks", "Custom Block");

    // Der Block selbst ist ein Abschnitt, der den Text enthält.
    Assert.AreEqual($"Text inside {customBlock.Name}\f", customBlock.FirstSection.Body.FirstParagraph.GetText());
    Assert.AreEqual(customBlock.FirstSection, customBlock.LastSection);
    // Jetzt können wir es als neuen Abschnitt in das Dokument einfügen.
    doc.AppendChild(doc.ImportNode(customBlock.FirstSection, true));

    // Wir können es auch im Baustein-Organizer von Microsoft Word finden und manuell platzieren.
    doc.Save(ArtifactsDir + "BuildingBlocks.CreateAndInsert.dotx");
}

/// <summary>
/// Richtet einen besuchten Baustein zum Einfügen in das Dokument als Schnellbaustein ein und fügt seinem Inhalt Text hinzu.
/// </summary>
public class BuildingBlockVisitor : DocumentVisitor
{
    public BuildingBlockVisitor(GlossaryDocument ownerGlossaryDoc)
    {
        mBuilder = new StringBuilder();
        mGlossaryDoc = ownerGlossaryDoc;
    }

    public override VisitorAction VisitBuildingBlockStart(BuildingBlock block)
    {
        // Konfigurieren Sie den Baustein als Schnellbaustein und fügen Sie Eigenschaften hinzu, die vom Building Blocks Organizer verwendet werden.
        block.Behavior = BuildingBlockBehavior.Paragraph;
        block.Category = "My custom building blocks";
        block.Description =
            "Using this block in the Quick Parts section of word will place its contents at the cursor.";
        block.Gallery = BuildingBlockGallery.QuickParts;

        // Einen Abschnitt mit Text hinzufügen.
        // Durch das Einfügen des Blocks in das Dokument wird dieser Abschnitt mit seinen untergeordneten Knoten an der Position angehängt.
        Section section = new Section(mGlossaryDoc);
        block.AppendChild(section);
        block.FirstSection.EnsureMinimum();

        Run run = new Run(mGlossaryDoc, "Text inside " + block.Name);
        block.FirstSection.Body.FirstParagraph.AppendChild(run);

        return VisitorAction.Continue;
    }

    public override VisitorAction VisitBuildingBlockEnd(BuildingBlock block)
    {
        mBuilder.Append("Visited " + block.Name + "\r\n");
        return VisitorAction.Continue;
    }

    private readonly StringBuilder mBuilder;
    private readonly GlossaryDocument mGlossaryDoc;
}

Siehe auch