Aspose.Words Document Object Model (DOM)

The The The Aspose.Words Document Object Model ()DOM) הוא ייצוג פנימי של מסמך Word. The The The Aspose.Words DOM מאפשר לך לקרוא, לתמרן ולשנות את התוכן והפורמט של מסמך Word.

סעיף זה מתאר את המעמדות העיקריים של Aspose.Words DOM היחסים שלהם. על ידי שימוש Aspose.Words DOM שיעורים, אתה יכול לקבל גישה מתודולוגית למסמכים ולפורמט.

יצירת מסמך עץ אובייקטים

כאשר מסמך קורא לתוך Aspose.Words <span notrans="<span notrans=" DOM"="">" לאחר מכן עץ אובייקט בנוי וסוגים שונים של אלמנטים של המסמך המקור יש משלהם. DOM חפצי עץ עם תכונות שונות.

בניית עץ Nodes

מתי Aspose.Words קורא מסמך Word לזיכרון, הוא יוצר אובייקטים של סוגים שונים המייצגים אלמנטים שונים של מסמכים. כל ריצה של טקסט, פסקה, שולחן או סעיף היא צומת, ואפילו המסמך עצמו הוא צומת. Aspose.Words מגדיר שיעור לכל סוג של מסמך.

עץ המסמך Aspose.Words עקבו אחרי Composite Design Pattern:

  • כל שיעורי הצומת בסופו של דבר נובעים מן Node שיעור, שהוא מעמד הבסיס ב Aspose.Words Document Object Model.
  • צמתים שיכולים להכיל צמתים אחרים, למשל, Section או Paragraph, מקור: CompositeNode שיעור, אשר בתורו נובע מן Node מעמד.

הדיאגרמה המסופקת להלן מציגה ירושה בין כיתות הצומת של Aspose.Words Document Object Model ()DOM). השמות של שיעורים מופשטים נמצאים ב- Italics.

aspose-words-dom

בואו נראה דוגמה. התמונה הבאה מציגה Microsoft Word מסמך עם סוגים שונים של תוכן.

document-example

בעת קריאת המסמך לעיל לתוך Aspose.Words DOM, עץ האובייקטים נוצר, כפי שמוצג בschema למטה.

document-example-dom

Document, Section, Paragraph, Table, Shape, Run, וכל שאר ellipses על הדיאגרמה הם Aspose.Words אובייקטים המייצגים אלמנטים של מסמך Word.

קבל Node סוג

למרות Node הכיתה מספיקה כדי להבחין בין נקודות שונות אחד מהשני. Aspose.Words מספק NodeType עידוד לפשט חלק API משימות, כגון בחירת נקודות מסוג מסוים.

סוג של כל צומת ניתן להשיג באמצעות NodeType רכוש. הנכס הזה מחזיר NodeType ערך enumeration לדוגמה, פסקה מיוצגת על ידי Paragraph שיעור החזרה NodeType.Paragraphצומת שולחן מיוצג על ידי Table שיעור החזרה NodeType.Table.

הדוגמה הבאה מראה כיצד לקבל סוג של צומת באמצעות NodeType המונחים:

מסמך ניווט

Aspose.Words מייצג מסמך כעץ צומת, המאפשר לך לנווט בין צמתים. סעיף זה מתאר כיצד לחקור ולניווט את עץ המסמך ב Aspose.Words.

כאשר אתה פותח את מסמך הדגימה, שהוצג קודם לכן, ב- Document Explorer, עץ הצומת מופיע בדיוק כפי שהוא מיוצג ב Aspose.Words.

document-in-document-explorer

מסמך Node Relationships

לדבורים בעץ יש יחסים ביניהן:

  • A node המכיל עוד צומת הוא parent.
    • הצומת הכלול בהורה child. צמתים של אותו הורה הם sibling צומת
  • The root צומת הוא תמיד Document צומת.

הצמתים שיכולים להכיל צמתים אחרים נובעים מן CompositeNode השיעור, וכל הנקודות נובעות בסופו של דבר מן Node מעמד. שתי כיתות בסיס אלה מספקות שיטות ונכסים משותפים לניווט מבנה העץ ושינוי.

הדיאגרמת האובייקט של UML מציגה מספר צמתים של מסמך הדגימה והקשרים שלהם זה לזה באמצעות ההורה, הילד ותכונות אח:

document-nodes-relationships

מקור: Node Husband

צומת תמיד שייך למסמך מסוים, גם אם הוא נוצר או הוסר מן העץ, כי מבנים חיוניים של מסמך כגון סגנונות ורשימות מאוחסנים בעץ. Document צומת. לדוגמה, אין אפשרות לקבל Paragraph ללא Document כי לכל סעיף יש סגנון מוקצה מוגדר ברחבי העולם עבור המסמך. חוק זה משמש בעת יצירת נקודות חדשות. הוספת חדש Paragraph ישירות DOM דורש אובייקט מסמך עבר למבנים.

בעת יצירת פסקה חדשה באמצעות DocumentBuilder, לבן תמיד יש Document מעמד מקושר אליו דרך DocumentBuilder.Document רכוש.

הדוגמה הקודית הבאה מראה כי בעת יצירת כל צומת, מסמך שיש לו את הצומת מוגדר תמיד:

הורים Node

לכל צומת יש הורה שצוין על ידי ParentNode רכוש. לצומת אין צומת הורה, כלומר ParentNode הוא אפס, במקרים הבאים:

    • הצומת נוצר ולא נוספו לעץ.
    • הצומת הוסר מהעץ.
    • זה השורש Document צומת שתמיד יש צומת הורה אפס.

אתה יכול להסיר צומת מהורה שלו על ידי קריאה Remove שיטה. דוגמה לקוד הבא מראה כיצד לגשת לצומת ההורה:

ילד נוש

הדרך היעילה ביותר לגשת אלמות הילד CompositeNode דרך FirstChild ו LastChild תכונות להחזיר את בלוטות הילד הראשון והאחרון בהתאמה. אם אין צמתים של ילדים, תכונות אלה חוזרות null.

CompositeNode גם מספק ChildNodes איסוף המאפשר גישה מאינדקס או מנהרה אל בלוטות הילד. The The The ChildNodes רכוש הוא אוסף חי של צמתים, כלומר, בכל פעם שהמסמכים משתנים, כגון כאשר צמתים הוסרו או נוספו, ChildNodes האוסף עודכן באופן אוטומטי.

אם לצומת אין ילד, אז ChildNodes רכוש מחזיר אוסף ריק. אתה יכול לבדוק אם CompositeNode מכיל כל בלוטות ילדים באמצעות HasChildNodes רכוש.

הדוגמה הבאה של הקוד מראה כיצד למנות צמתים מיידיים של ילד CompositeNode שימוש במארגן המסופק על ידי ChildNodes אוסף:

הדוגמה הבאה של הקוד מראה כיצד למנות צמתים מיידיים של ילד CompositeNode באמצעות גישה לאינדקס:

תגית: Nodes

אתה יכול לקבל את הצומת כי מיד precedes או לעקוב אחר צומת מסוים באמצעות הצומת מסוים. PreviousSibling ו NextSibling תכונות, בהתאמה. אם צומת הוא הילד האחרון של ההורה שלו, אז NextSibling רכוש הוא null. לעומת זאת, אם הצומת הוא הילד הראשון של הוריו, PreviousSibling רכוש הוא null.

דוגמה הקוד הבא מראה כיצד לבקר ביעילות את כל אבני הילד הישירות והעקיפות של צומת מורכב:

גישה קלה לילד ולהורים

עד כה, דנו בתכונות שמחזירות את אחד מסוגי הבסיס – Node או CompositeNode. אבל לפעמים יש מצבים שבהם ייתכן שיהיה עליך להטיל ערכים לשיעור מסוים, כגון Run או Paragraph. כלומר, אתה לא יכול להתנתק לחלוטין מהליכוד כאשר אתה עובד עם Aspose.Words DOM, זה מורכב.

כדי להפחית את הצורך ליהוק, רוב Aspose.Words שיעורים מספקים תכונות ואוספים המספקים גישה אדיבה. ישנם שלושה דפוסים בסיסיים של גישה קלה:

תכונות הקלד הם רק קיצורי דרך שימושיים שלפעמים מספקים גישה קלה יותר מאשר תכונות גנריות תורשתיות Node.ParentNode ו CompositeNode.FirstChild.

הדוגמה הבאה של הקוד מראה כיצד להשתמש בתכונות מקלות כדי לגשת לאדים של עץ המסמך: