Node

Node class

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

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

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;
    }

أنظر أيضا