כיצד לעבוד עם סימון XML מותאם אישית ב-.NET
איך לעבוד עם סימון מותאם XML ב-.NET
מסמך Word יכול לשאת נתוני XML מותאמים לצד התוכן הגלוי שלו — נתונים המשמשים לקשר בקרי תוכן, לאחסן מטא-נתונים ספציפיים לאפליקציה, או להטמיע חלקים שנוספו על-ידי אפליקציה אחרת. מדריך זה מציג כיצד לקרוא את הנתונים הללו, להוסיף חלקים מותאמים חדשים של XML, ולבדוק את תגי ה-smart tags הישנים שעשויים עדיין להימצא במסמכים ישנים, באמצעות CustomXmlPart, CustomXmlProperty ו-SmartTag ב-Aspose.Words FOSS עבור .NET.
מדריך שלב-אחר-שלב
שלב 1: קריאת נתוני XML מותאמים ממסמך
Document.CustomXmlParts מחזיר CustomXmlPartCollection — אותו מנגנון שבו Word משתמש כדי לתמוך בבקרי תוכן ממופים ל-XML. יש לאיטרט את האוסף, או לקרוא ל-GetById(id) כאשר כבר יודעים איזה חלק נדרש, כדי לקבל CustomXmlPart. כל חלק חושף את Id, מערך בתים Data המחזיק את ה-XML הגולמי, DataChecksum לזיהוי האם הנתונים השתנו ללא השוואת בתים מלאה, ו-Schemas — CustomXmlSchemaCollection המפרט את סכמות ה-XML המשויכות אליו.
שלב 2: הוספה או עדכון של חלק XML מותאם
קרא CustomXmlPartCollection.Add(id, xml) עם מחרוזת מזהה ותוכן ה-XML כדי ליצור חלק ישירות, או בנה CustomXmlPart בנפרד והעבר אותו ל-Add(part). כדי להסיר נתונים, השתמש ב-RemoveAt(index) במיקום ספציפי או ב-Clear() כדי להסיר כל חלק. בעת העתקת נתוני XML מותאמים בין מסמכים, השתמש ב-CustomXmlPart.Clone() (או ב-Clone() של האוסף) על החלק המקור במקום לקרוא מחדש ולהוסיף את ה-XML הגולמי, ואז הוסף את השכפול לאוסף ה-Document.CustomXmlParts של המסמך היעד.
שלב 3: ניהול הסכמות המשויכות לחלק
CustomXmlPart.Schemas מגיע ל-CustomXmlSchemaCollection, אשר עוקב אחרי כתובות ה-URI של הסכמות המשויכות לחלק כמחרוזות רגילות במקום כאובייקטי סכמות מנותחים. השתמש ב-Add(value) כדי לרשום כתובת URI של סכימה, ב-Remove(name) או ב-RemoveAt(index) כדי להסיר אחת, ב-IndexOf(value) כדי לאתר אחת, וב-Clear() כדי להסיר את כולן. Count מדווח כמה כתובות URI של סכמות משוייכות כעת לחלק.
שלב 4: עבודה עם חלקים מותאמים ברמת החבילה
לא כל חלק בלתי נראה בחבילה של OOXML הוא XML מותאם. Document.PackageCustomParts מחזיר CustomPartCollection של אובייקטים CustomPart — חלקים שרירותיים השמורים בחבילה, כגון חלקים שנוספו על ידי יישום אחר שנגע בקובץ. לכל CustomPart יש Name, ContentType, RelationshipType, מערך בתים Data, ודגל IsExternal שמציין האם מדובר בהתייחסות חיצונית ולא בתוכן משובץ. Add(part), RemoveAt(index) ו-Clear() מנהלים את האוסף באותו אופן כמו CustomXmlPartCollection. בדוק את PackageCustomParts — ולא את CustomXmlParts — כאשר חלק שהמסמך שלך אמור לשאת אינו מופיע באוסף ה-XML המותאם.
שלב 5: בדיקת תגיות חכם מורשת ותכונותיהן
SmartTag הוא סוג צומת (NodeType.SmartTag, נבנה עם SmartTag(doc)) שמייצג תג חכם של Word מורשת העוטף טקסט מזוהה. בדוק את Element ו-Uri יחד כדי לזהות איזו מערכת זיהוי יצרה את התג, ואז קרא את Properties — CustomXmlPropertyCollection — עבור הנתונים המובנים שהמערכת חיברה. בתוך CustomXmlPropertyCollection, המפתח (למשל properties["MyProp"]) או Contains(name) מחפשים תכונה ספציפית, IndexOfKey(name) מחזיר את המיקום שלה, ו-Remove(name)/RemoveAt(index)/Clear() מסירים ערכים; כל CustomXmlProperty נבנה עם CustomXmlProperty(name, uri, value) ומשתף Name, Uri, ו-Value. מאחר ש-SmartTag נגזר מ-CompositeNode, הוא גם משתתף בעץ המסמך כמו צמתים אחרים, תומך ב-Accept(visitor), AcceptStart(visitor), ו-AcceptEnd(visitor) עבור ניווט מבוסס DocumentVisitor.
בעיות נפוצות ותיקונים
CustomXmlPartCollection.GetById(id) אינו מחזיר דבר ניתן לשימוש. המזהה אינו תואם לאף חלק הקיים כרגע ב Document.CustomXmlParts. ערוך ספירה של האוסף כדי לאשר שהמזהה קיים, או הוסף את החלק תחילה עם Add(id, xml).
חלק שנוסף על ידי יישום אחר אינו נמצא על-ידי איטרציה CustomXmlParts. חלקי חבילה שאינם XML נחשפים דרך Document.PackageCustomParts, לא CustomXmlParts. בדוק PackageCustomParts (א CustomPartCollection) במקום זאת.
SmartTag.Properties ריק למרות שהתג קיים בבירור. לא כל מזוהה של תג חכם מצרף תכונות מובנות. בדוק SmartTag.Element and Uri כדי לאשר איזה מזוהה יצר את התג לפני הנחת תכונות ספציפיות שיהיו נוכחות.
נתוני XML מותאמים אישית אינם נראים קשורים לבקרת התוכן שאליה הם צריכים להיות קשורים. בקרות תוכן קשורות ל-XML מותאם אישית דרך תצורת הקישור לנתונים שלהן, ולא באופן אוטומטי לכל CustomXmlPart in Document.CustomXmlParts. אשר איזו חלק מבקרת תוכן נתונה קשורה בפועל במקום להניח יחס של אחד לאחד.
שאלות נפוצות
איך מוסיפים נתוני XML מותאמים אישית למסמך?
התקשר ל-Document.CustomXmlParts.Add(id, xml) עם מחרוזת id ותוכן XML, או בנה CustomXmlPart בנפרד והעבר אותו ל-Add(part).
מה ההבדל בין CustomXmlPart ל-CustomXmlProperty?
CustomXmlPart הוא אי נתוני XML שלם — מטען של מערך בתים יחד עם סכמות משויכות — שנגיש דרך Document.CustomXmlParts. CustomXmlProperty הוא זוג שם/ערך יחיד, בדרך כלל נגיש דרך SmartTag.Properties ולא ישירות מהמסמך.
איך אני מעתיק נתוני XML מותאמים אישית ממסמך אחד לאחר?
הפעל את Clone() על ה-CustomXmlPart המקור, ואז הוסף את השכפול ל-Document.CustomXmlParts של מסמך היעד באמצעות Add(part).
מהו SmartTag, ומתי אני עשוי להיתקל בו?
SmartTag הוא תכונה ישנה של Word המייצגת טקסט שהוזוהה והעטף על ידי מזוהה תג חכם — צומת מסמך (NodeType.SmartTag) עם Element ו-Uri המזהים את המזוהה, ועוד אוסף Properties של ערכי CustomXmlProperty. הוא מופיע במסמכים שנכתבו או נערכו עם תגיות חכמות מופעלות בגרסאות Word ישנות.
איך אני יודע כמה חלקי XML מותאמים אישית או חלקי חבילה יש למסמך?
קרא את Count על Document.CustomXmlParts (CustomXmlPartCollection) או את Document.PackageCustomParts (CustomPartCollection) בהתאמה.