Node

Node class

الفئة الأساسية لجميع العقد في مستند Word.

لمعرفة المزيد، قم بزيارةنموذج كائن مستند Aspose.Words (DOM) مقالة توثيقية.

public abstract class Node

الخصائص

اسموصف
CustomNodeId { get; set; }يحدد معرف العقدة المخصصة.
virtual Document { get; }الحصول على المستند الذي تنتمي إليه هذه العقدة.
virtual IsComposite { get; }إرجاعحقيقي إذا كانت هذه العقدة يمكن أن تحتوي على عقد أخرى.
NextSibling { get; }يحصل على العقدة التي تلي هذه العقدة مباشرة.
abstract NodeType { get; }يحصل على نوع هذه العقدة.
ParentNode { get; }يحصل على الأصل المباشر لهذه العقدة.
PreviousSibling { get; }يحصل على العقدة التي تسبق هذه العقدة مباشرة.
Range { get; }إرجاع أRange الكائن الذي يمثل جزء المستند الموجود في هذه العقدة.

طُرق

اسموصف
abstract Accept(DocumentVisitor)يقبل الزائر.
Clone(bool)إنشاء نسخة مكررة من العقدة.
GetAncestor(NodeType)يحصل على السلف الأول للمحددNodeType .
GetAncestor(Type)الحصول على السلف الأول لنوع الكائن المحدد.
virtual GetText()الحصول على نص هذه العقدة وجميع أبنائها.
NextPreOrder(Node)الحصول على العقدة التالية وفقًا لخوارزمية اجتياز شجرة الطلب المسبق.
PreviousPreOrder(Node)الحصول على العقدة السابقة وفقًا لخوارزمية اجتياز شجرة الطلب المسبق.
Remove()يزيل نفسه من الأصل.
ToString(SaveFormat)تصدير محتوى العقدة إلى سلسلة بالتنسيق المحدد.
ToString(SaveOptions)تصدير محتوى العقدة إلى سلسلة باستخدام خيارات الحفظ المحددة.
static NodeTypeToString(NodeType)طريقة مساعدة تقوم بتحويل قيمة تعداد نوع العقدة إلى سلسلة سهلة الاستخدام.

ملاحظات

يتم تمثيل المستند كشجرة من العقد، تشبه DOM أو XmlDocument.

لمزيد من المعلومات، راجع نمط التصميم المركب.

الNode فصل:

  • يحدد واجهة العقدة الفرعية.
  • يحدد الواجهة لزيارة العقد.
  • يوفر إمكانية الاستنساخ الافتراضية.
  • ينفذ العقدة الأصلية وآليات وثيقة المالك.
  • ينفذ الوصول إلى العقد الأخوة.

أمثلة

يوضح كيفية إزالة جميع العقد الفرعية من نوع معين من العقدة المركبة.

Document doc = new Document(MyDir + "Tables.docx");

Assert.AreEqual(2, doc.GetChildNodes(NodeType.Table, true).Count);

Node curNode = doc.FirstSection.Body.FirstChild;

while (curNode != null)
{
    // احفظ العقدة الشقيقة التالية كمتغير في حالة أردنا الانتقال إليها بعد حذف هذه العقدة.
    Node nextNode = curNode.NextSibling;

    // يمكن أن يحتوي نص القسم على عقد الفقرة والجدول.
    // إذا كانت العقدة عبارة عن جدول، فقم بإزالتها من الأصل.
    if (curNode.NodeType == NodeType.Table)
        curNode.Remove();

    curNode = nextNode;
}

Assert.AreEqual(0, doc.GetChildNodes(NodeType.Table, true).Count);

يوضح كيفية استنساخ عقدة مركبة.

Document doc = new Document();
Paragraph para = doc.FirstSection.Body.FirstParagraph;
para.AppendChild(new Run(doc, "Hello world!"));

// فيما يلي طريقتان لاستنساخ عقدة مركبة.
// 1 - أنشئ نسخة من العقدة، وأنشئ نسخة من كل عقد من العقد التابعة لها أيضًا.
Node cloneWithChildren = para.Clone(true);

Assert.IsTrue(((CompositeNode)cloneWithChildren).HasChildNodes);
Assert.AreEqual("Hello world!", cloneWithChildren.GetText().Trim());

// 2 - إنشاء نسخة من العقدة بمفردها دون أي عناصر فرعية.
Node cloneWithoutChildren = para.Clone(false);

Assert.IsFalse(((CompositeNode)cloneWithoutChildren).HasChildNodes);
Assert.AreEqual(string.Empty, cloneWithoutChildren.GetText().Trim());

يوضح كيفية اجتياز مجموعة العقد الفرعية للعقدة المركبة.

Document doc = new Document();

// أضف مسارين وشكلًا واحدًا كعقد فرعية إلى الفقرة الأولى من هذه الوثيقة.
Paragraph paragraph = (Paragraph)doc.GetChild(NodeType.Paragraph, 0, true);
paragraph.AppendChild(new Run(doc, "Hello world! "));

Shape shape = new Shape(doc, ShapeType.Rectangle);
shape.Width = 200;
shape.Height = 200;
// لاحظ أن "CustomNodeId" لا يتم حفظه في ملف إخراج وهو موجود فقط أثناء عمر العقدة.
shape.CustomNodeId = 100;
shape.WrapType = WrapType.Inline;
paragraph.AppendChild(shape);

paragraph.AppendChild(new Run(doc, "Hello again!"));

// كرر من خلال مجموعة الفقرة من العناصر الفرعية المباشرة،
// وطباعة أي مسارات أو أشكال نجدها داخلها.
NodeCollection children = paragraph.GetChildNodes(NodeType.Any, false);

Assert.AreEqual(3, paragraph.GetChildNodes(NodeType.Any, false).Count);

foreach (Node child in children)
    switch (child.NodeType)
    {
        case NodeType.Run:
            Console.WriteLine("Run contents:");
            Console.WriteLine($"\t\"{child.GetText().Trim()}\"");
            break;
        case NodeType.Shape:
            Shape childShape = (Shape)child;
            Console.WriteLine("Shape:");
            Console.WriteLine($"\t{childShape.ShapeType}, {childShape.Width}x{childShape.Height}");
            break;
    }

أنظر أيضا