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 שיעורים, אתה יכול לקבל גישה מתודולוגית למסמכים ולפורמט.

ליצור Document אובייקטים עץ

כאשר מסמך קורא לתוך 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

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

dom-aspose-words

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

קבל Node סוג

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

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

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

מסמך ניווט

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

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

document-in-document-explorer

מסמכים Nodes Relationships

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

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

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

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

document-nodes-relationships-aspose-words

מקור: Node Husband

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

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

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

הורים Node

לכל צומת יש הורה שצוין על ידי parent_node רכוש. לצומת אין זכר הורה, כלומר parent_node הוא None, במקרים הבאים:

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

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

תינוק

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

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

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

הדוגמה הבאה של הקוד מראה כיצד לספור צמתים של ילד מיידי CompositeNode שימוש ב- enumerator המסופק על ידי Get_child_nodes אוסף:

תגית: Nodes

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

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

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

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

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

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

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