Xml Serialization

דיברנו כבר על שמירת אובייקטים לקובץ או זרם מידע באמצעות Binary Serialization, הפעם נשתמש ב Xml Serialization. למה צריך עוד אחד? יש יתרונות וחסרונות... חסרון אחד גדול הוא היעילות. ב Xml התהליך פחות יעיל והקובץ שנוצר הוא הרבה יותר גדול, דבר נוסף הוא שכל אחד יכול לפתוח אותו עם כל עורך טקסט. יתרונות - כל אחד יכול לפתוח אותו עם עורך טקסט, כך שאני יודע בדיוק מה יש בקובץ, יתרון נוסף הוא שניתן לשלוח אותו לכל אפליקציה באינטרנט שלא עובדת עם דוט נט והיא תוכל לפתוח ולקרוא אותו בלי בעיה. יותר קל לעבור חומת אש כי מדובר בטקסט שניתן לקרוא ולבחון, בקיצור, מומלץ יותר בדרך כלל...
יש לשים לב - כל השדות שאנו רוצים שישמרו צריכים להיות public! שדות אחרים פשוט לא ישמרו ולא מבינים למה זה לא עובד...

נשתמש  באותו מחלקה Person שבה כבר השתמשנו לשם הדוגמה. הפעם לא צריך להוסיף את המילה  Serializable לפני הגדרת המחלקה.

public class Person
{
    public string firstName;
    public string lastName;
    public int age;
}

ניצור אובייקט מהמחלקה XmlSerializer

XmlSerializer formatter = new XmlSerializer(typeof(Person));

כעת ניצור הפניה לקובץ שבו נשמור את האובייקט שלנו

FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.OpenOrCreate);

ונבצע את השמירה

formatter.Serialize(fs, p);

זהו... פשוט ביותר. יופי, עכשיו איך טוענים את מה ששמרנו? באותה קלות
ניצור הפניה לקובץ שבו שמרנו את האובייקט

FileStream fs = new FileStream(openFileDialog1.FileName,

ניצור את אותו אובייקט שיטען את הנתונים באותה צורה שיצרנו אותו לשמירת הנתונים

XmlSerializerformatter = new XmlSerializer(typeof(Person));

ופשוט נטען אותם

Person p = (Person)formatter.Deserialize(fs);

שימו לב רק שהטעינה מחזירה אובייקט מסוג object, ולכן עשינו casting לסוג Person
פשוט, נקי ומהיר

להורדת פרוייקט דוגמה

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

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