XmlTextWriter

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

אנו משתמשים במחלקה XmlTextWriter. לשם כך ניצור קודם אובייקט מהמחלקה StringWriter שאליו יכתב המידע ואז ניצור את ה - XmlTextWriter שלנו

StringWriter sw = new StringWriter();
XmlTextWriter writer = new XmlTextWriter(sw);

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

writer.Formatting = Formatting.Indented;
writer.Indentation = 2;

השורה הבאה מדפיסה את תחילת המסמך, זה איפה שכתובה השורה שזה xml ומה הגירסה וכו'...

writer.WriteStartDocument();//this is the <?xml version="1.0"...

וכעת נתחיל במסמך עצמו. אני אגדיר אלמנט ראשי שבו נשים את כל השאר והוא יקרא bookstore, וכמו שכבר ניחשתם, הוא יכיל בתוכו אלמנטים של book...

writer.WriteStartElement("bookstore");

שימו לב שכאן כתבתי את תחילת האלמנט, זה אומר שצריך לא לשכוח בסוף לכתוב את הסגירה שלו

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

writer.WriteStartElement("book");

- מספר מזהה זה היה תחילת האלמנט, כעת נוסיף לו תכונה:

writer.WriteAttributeString("isbn", "398743543");

ועכשיו בתוכו ניצור עוד אלמנטים פשוטים

writer.WriteElementString("title", "what is life");

זה היה שם הספר

writer.WriteElementString("price", "34");

וזה היה המחיר. כעת נסגור את האלמנט שפתחנו

writer.WriteEndElement();//book

ונעשה את אותו התהליך שוב עבור ספר אחר

writer.WriteStartElement("book");
writer.WriteAttributeString("isbn", "9984343");
writer.WriteElementString("title", "about bits and bytes");
writer.WriteElementString("price", "77");
writer.WriteEndElement();//book

וכעת נסגור את האלמנט שפתחנו בהתחלת המסמך

writer.WriteEndElement();//bookstore

והתוצאה בתור סטרינג

string result= sw.ToString();

טוען נתונים...
אהבתם?
המליצו לאחרים!

נהניתם? בעיות? הערות?
אני רוצה לשמוע!
rss feed