CompositeNode

CompositeNode class

الفئة الأساسية للعقد التي يمكن أن تحتوي على عقد أخرى.

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

public abstract class CompositeNode : Node, IEnumerable<Node>, IXPathNavigable

الخصائص

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

طُرق

اسموصف
abstract Accept(DocumentVisitor)يقبل زائرًا.
abstract AcceptEnd(DocumentVisitor)عند تنفيذه في فئة مشتقة، يتم استدعاء طريقة VisitXXXEnd للزائر المستند المحدد.
abstract AcceptStart(DocumentVisitor)عند تنفيذه في فئة مشتقة، يتم استدعاء طريقة VisitXXXStart للزائر المستند المحدد.
AppendChild<T>(T)يضيف العقدة المحددة إلى نهاية قائمة العقد الفرعية لهذه العقدة.
Clone(bool)ينشئ نسخة مكررة من العقدة.
CreateNavigator()ينشئ متصفحًا يمكن استخدامه للتنقل بين العقد وقراءتها.
GetAncestor(NodeType)يحصل على السلف الأول للعنصر المحددNodeType .
GetAncestor(Type)يحصل على السلف الأول لنوع الكائن المحدد.
GetChild(NodeType, int, bool)يعيد عقدة فرعية رقم N تطابق النوع المحدد.
GetChildNodes(NodeType, bool)يعيد مجموعة حية من العقد الفرعية التي تطابق النوع المحدد.
GetEnumerator()يوفر الدعم لكل تكرار للأسلوب على العقد الفرعية لهذه العقدة.
override GetText()يحصل على نص هذه العقدة وجميع أبنائها.
IndexOf(Node)يعيد مؤشر العقدة الفرعية المحددة في مجموعة العقد الفرعية.
InsertAfter<T>(T, Node)يقوم بإدراج العقدة المحددة فورًا بعد عقدة المرجع المحددة.
InsertBefore<T>(T, Node)يقوم بإدراج العقدة المحددة مباشرة قبل عقدة المرجع المحددة.
NextPreOrder(Node)يحصل على العقدة التالية وفقًا لخوارزمية عبور شجرة الترتيب المسبق.
PrependChild<T>(T)يضيف العقدة المحددة إلى بداية قائمة العقد الفرعية لهذه العقدة.
PreviousPreOrder(Node)يحصل على العقدة السابقة وفقًا لخوارزمية عبور شجرة الترتيب المسبق.
Remove()يزيل نفسه من الأصل.
RemoveAllChildren()يزيل جميع العقد الفرعية للعقدة الحالية.
RemoveChild<T>(T)يزيل العقدة الفرعية المحددة.
RemoveSmartTags()يزيل الكلSmartTag العقد المنحدرة من العقدة الحالية.
SelectNodes(string)يحدد قائمة العقد المطابقة لتعبير XPath.
SelectSingleNode(string)يحدد الأولNode الذي يتطابق مع تعبير XPath.
ToString(SaveFormat)يصدر محتوى العقدة إلى سلسلة بالتنسيق المحدد.
ToString(SaveOptions)يقوم بتصدير محتوى العقدة إلى سلسلة باستخدام خيارات الحفظ المحددة.

ملاحظات

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

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

الCompositeNode فصل:

  • يوفر الوصول إلى العقد الفرعية.
  • تنفيذ العمليات المركبة مثل إدراج وإزالة الأطفال.
  • توفر طرقًا للتنقل في XPath.

أمثلة

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

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

أنظر أيضا