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 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.
Node
מעמד.
בואו נראה דוגמה. התמונה הבאה מציגה Microsoft Word מסמך עם סוגים שונים של תוכן.
בעת קריאת המסמך לעיל לתוך Aspose.Words DOM, עץ האובייקטים נוצר, כפי שמוצג בschema למטה.
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.
מסמך Node Relationships
לדבורים בעץ יש יחסים ביניהן:
- A node המכיל עוד צומת הוא parent.
-
- הצומת הכלול בהורה child. צמתים של אותו הורה הם sibling צומת
- The root צומת הוא תמיד Document צומת.
הצמתים שיכולים להכיל צמתים אחרים נובעים מן CompositeNode השיעור, וכל הצמתים נובעים בסופו של דבר מן Node מעמד. שתי כיתות בסיס אלה מספקות שיטות ונכסים משותפים לניווט מבנה העץ ושינוי.
הדיאגרמת האובייקט של UML מציגה מספר צמתים של מסמך הדגימה והקשרים שלהם זה לזה באמצעות ההורה, הילד ותכונות אח:
מקור: Node Husband
צומת תמיד שייך למסמך מסוים, גם אם הוא נוצר או הוסר מהעץ, משום שמבני מסמך חיוניים כגון סגנונות ורשימות מאוחסנים בעץ. Document צומת. לדוגמא, אין אפשרות לקבל Paragraph ללא Document כי לכל סעיף יש סגנון מוקצה מוגדר ברחבי העולם עבור המסמך. חוק זה משמש בעת יצירת נקודות חדשות. הוספת חדש Paragraph ישירות DOM דורש אובייקט מסמך עבר ליוצר.
בעת יצירת פסקה חדשה באמצעות DocumentBuilder, לבן תמיד יש Document מעמד מקושר אליו דרך DocumentBuilder.Document רכוש.
הדוגמה הקודית הבאה מראה כי בעת יצירת כל צומת, מסמך שיהיה בעל הצומת מוגדר תמיד:
הורים Node
לכל צומת יש הורה שצוין על ידי ParentNode רכוש. לצומת אין זכר הורה, כלומר ParentNode הוא אפס, במקרים הבאים:
-
- הצומת נוצר ולא נוספו לעץ.
-
- הצומת הוסר מהעץ.
-
- זה השורש Document צומת שתמיד יש צומת הורה אפס.
אתה יכול להסיר צומת מהורה שלו על ידי קריאה Remove שיטה. דוגמה לקוד הבא מראה כיצד לגשת לצומת ההורה:
תינוק
הדרך היעילה ביותר לגשת אלמות הילד CompositeNode דרך FirstChild ו LastChild תכונות להחזיר את בלוטות הילד הראשון והאחרון בהתאמה. אם אין צמתים של ילדים, תכונות אלה חוזרות null.
CompositeNode גם מספק GetChildNodes שיטה המאפשרת גישה מאינדקס או מנהרה אל בלוטות הילד. The The The ChildNodes הנכס הוא אוסף חי של צמתים, כלומר, בכל פעם שהמסמכים משתנים, כגון כאשר צמתים הוסרו או נוספו, ChildNodes האוסף עודכן באופן אוטומטי.
אם לצומת אין ילד, אז ChildNodes רכוש מחזיר אוסף ריק. אתה יכול לבדוק אם CompositeNode מכיל כל בלוטות ילדים באמצעות HasChildNodes רכוש.
הדוגמה הבאה של הקוד מראה כיצד לספור צמתים של ילד מיידי CompositeNode
שימוש ב- enumerator המסופק על ידי ChildNodes
אוסף:
הדוגמה הבאה של הקוד מראה כיצד לספור צמתים של ילד מיידי CompositeNode
באמצעות גישה לאינדקס:
תגית: Nodes
אתה יכול לקבל את הצומת כי מיד precedes או לעקוב אחר צומת מסוים באמצעות הצומת מסוים. PreviousSibling ו NextSibling תכונות, בהתאמה. אם צומת הוא הילד האחרון של ההורה שלו, אז NextSibling הרכוש הוא null. לעומת זאת, אם הצומת הוא הילד הראשון של ההורה שלו, PreviousSibling הרכוש הוא null.
הדוגמה הבאה של הקוד מראה כיצד לבקר ביעילות את כל אבני הילד הישירות והעקיפות של צומת מורכב:
גישה קלה לילד ולהורים
עד כה, דנו בתכונות שמחזירות את אחד מסוגי הבסיס – Node או CompositeNode. אבל לפעמים יש מצבים שבהם ייתכן שיהיה עליך להטיל ערכים לשיעור מסוים, כגון Run או Paragraph. כלומר, אתה לא יכול להתנתק לחלוטין מהליכוד כאשר אתה עובד עם Aspose.Words DOM, זה מורכב.
כדי להפחית את הצורך ליהוק, רוב Aspose.Words שיעורים מספקים תכונות ואוספים המספקים גישה קלה מאוד. ישנם שלושה דפוסים בסיסיים של גישה קלה:
- צומת הורה חושף FirstXXX ו LastXXX תכונות. לדוגמה, Document יש FirstSection ו LastSection תכונות. באופן דומה, Table יש תכונות כגון FirstRow, LastRow, ואחרים.
- צומת הורה חושף אוסף טיפוסי של בלוטות ילדים, כגון Document.Sections, Body.Paragraphs, ואחרים.
- ילד צומת מספק גישה קלה אל ההורה שלו, כגון Run.ParentParagraph, Paragraph.ParentSection, ואחרים.
תכונות סוג הם רק קיצורי דרך שימושיים שלפעמים מספקים גישה קלה יותר מאשר תכונות גנריות תורשתיות Node.ParentNode ו CompositeNode.FirstChild.
הדוגמה הבאה של הקוד מראה כיצד להשתמש בתכונות מקלות כדי לגשת לאדים של עץ המסמך: