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

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. serialization: קובץ XML עם ג'יבריש

serialization: קובץ XML עם ג'יבריש

מתוזמן נעוץ נעול הועבר ארכיון code613m
7 פוסטים 2 כותבים 563 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • A מנותק
    A מנותק
    avr416
    כתב ב נערך לאחרונה על ידי
    #1

    שיניתי את הserialization של התוכנה שלי ליצירת קובץ XML, אבל כשאני פותח אותו בכתבן אז אני מקבל קובץ XML מעולה, הבעיה שאת הנתונים בעברית הוא מציג לי בג'יבריש. איך אפשר לתקן זאת? בהגדרות של הסריליזציה, או שזו בכלל בעיה בכתבן??
    (נראה לי שזו בעיה בסריליזציה כי כשאני מנסה לפתוח בתוכנה את הקובץ שנוצר - ע"י מתודה של דסריליזציה - הוא קורס וכותב לי שהקובץ פגום..)
    תודה לכולכם על כל העזרה!!

    פורסם במקור בפורום CODE613 ב05/07/2015 19:24 (+03:00)

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      תראה את הקוד של הסריאליזציה.

      פורסם במקור בפורום CODE613 ב06/07/2015 11:02 (+03:00)

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      0
      • A מנותק
        A מנותק
        avr416
        כתב ב נערך לאחרונה על ידי
        #3

        זה הקוד:

        public static void SaveDonorsOfXml(string fileName, List<Donor> donor)//serialization of XML
                {
                    var myObject = donor;
                    using (FileStream outStream = new FileStream(fileName, FileMode.Create))
                    {
                        XmlSerializer xmlser = new XmlSerializer(typeof(List<Donor>));
                        xmlser.Serialize(outStream, myObject);
                    }
                }
        

        וזה הפלט שנוצר:

        <?xml version="1.0"?>
        <ArrayOfDonor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
          <Donor>
            <Id>0</Id>
            <FirstName>׳׳‘׳¨׳”׳</FirstName>
            <LastName>׳׳—׳™׳˜׳•׳‘</LastName>
            <Tel>6847777</Tel>
            <Email></Email>
            <howDonat>creditcard</howDonat>
            <freq>disposable</freq>
            <Adress>׳₪׳¡׳’׳•׳×</Adress>
            <sumDonation>10</sumDonation>
            <startDonor>2015-07-05T10:06:01.4448172+03:00</startDonor>
            <DatePay>0</DatePay>
          </Donor>
          <Donor>
            <Id>1</Id>
            <FirstName>׳×׳—׳™׳”</FirstName>
            <LastName>׳׳—׳™׳˜׳•׳‘</LastName>
            <Tel>5930060</Tel>
            <Email></Email>
            <howDonat>creditcard</howDonat>
            <freq>disposable</freq>
            <Adress>׳₪׳¡׳’׳•׳×</Adress>
            <sumDonation>10</sumDonation>
            <startDonor>2015-07-05T10:06:25.6046538+03:00</startDonor>
            <DatePay>0</DatePay>
          </Donor>
          <Donor>
            <Id>2</Id>
            <FirstName>׳§׳•׳‘׳™</FirstName>
            <LastName>׳₪׳™׳’'׳•</LastName>
            <Tel />
            <Email>kmp@gmail.com</Email>
            <howDonat>creditcard</howDonat>
            <freq>disposable</freq>
            <Adress>׳₪׳¡׳’׳•׳×</Adress>
            <sumDonation>10</sumDonation>
            <startDonor>2015-07-05T10:07:09.146535+03:00</startDonor>
            <DatePay>0</DatePay>
          </Donor>
          <Donor>
            <Id>3</Id>
            <FirstName>׳׳™׳¦׳™׳§</FirstName>
            <LastName>׳₪׳ ׳™׳¨׳™</LastName>
            <Tel />
            <Email>itsikpa@gmail.com</Email>
            <howDonat>creditcard</howDonat>
            <freq>monthly</freq>
            <Adress />
            <sumDonation>5</sumDonation>
            <startDonor>2015-07-05T10:13:05.9602828+03:00</startDonor>
            <DatePay>5</DatePay>
          </Donor>
        </ArrayOfDonor>
        

        עכשיו פתחתי את הקובץ בוורד והוא מציג לי את המילים בעברית בצורה הפוכה..

        פורסם במקור בפורום CODE613 ב06/07/2015 11:03 (+03:00)

        תגובה 1 תגובה אחרונה
        0
        • A מנותק
          A מנותק
          avr416
          כתב ב נערך לאחרונה על ידי
          #4

          לאחר בדיקה יותר לעומק..
          את הג'יבריש הוא הציג לי כשפתחתי אותו בכתבן, כשפתחתי בוורד הוא הציג בעברית הפוכה, וכשפתחתי אותו בפנקס הרשימות אז הוא הציג את העברית מעולה!! מסקנה: עדיף להשתמש בפנקס (עם דף ועט..) :lol:
          כמו כן, עכשיו בdebugging של התכנית הוא כותב לי שגיאה אחרת, שהערך אינו חוקי.
          כלומר, אחד המשתנים הוא באיזה תאריך יחול החיוב של התורם, אולם יש בו ערך רק כאשר מדובר בתרומה קבועה ולא בתרומה חד"פ.
          לכן, כאשר הוא עושה דסריליזציה ואין ערך במשתנה הנ"ל בקובץ, והוא מנסה להציב את הנתונים באובייקט החדש שהוא בונה, הוא מקבל שגיאה שאני עצמי זרקתי (שכאשר הערך גדול מ31 הוא לא בטווח.. ובעברית: ArgumentOutOfRangeException).
          אציין רק שכשאר עשיתי סריליזציה בינרית לא היו לי שום בעיות עם זה.. (כנראה שבכל זאת בXML לא הכל וורוד..)
          מה שעשיתי זה שיניתי את האימות של הset ל:
          if(value>=0 &&value<=31) והכל בא על מקומו בשלום.
          רק מעניין מדוע יש הבדל בין התוכנות השונות, ובין הסריליזציה הבינארית לXML.

          פורסם במקור בפורום CODE613 ב06/07/2015 13:49 (+03:00)

          תגובה 1 תגובה אחרונה
          1
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            כתב ב נערך לאחרונה על ידי
            #5

            מאוד מענייין מה שאתה כותב. השגיאה הזאת קורה כשהערך גדול מ31? או אפי' פחות? ואיך היה הקוד קודם? נשמע ממש משונה ההבדל בין הבינארי לXML בנושא הזה.

            פורסם במקור בפורום CODE613 ב06/07/2015 14:08 (+03:00)

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            0
            • A מנותק
              A מנותק
              avr416
              כתב ב נערך לאחרונה על ידי
              #6

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

              public int DatePay//תאריך תשלום בחודש (בתרומה קבועה בלבד)
                      {
                          get { return datePay; }
                          set
                          {
                              if (value > 0 && value < 31)
                                  this.datePay = value;
                              else
                                  throw new ArgumentOutOfRangeException("This value is not legal! select value from 1 to 31!");
                          }
                      }
              

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

              פורסם במקור בפורום CODE613 ב06/07/2015 14:27 (+03:00)

              תגובה 1 תגובה אחרונה
              0
              • dovidD מנותק
                dovidD מנותק
                dovid ניהול
                כתב ב נערך לאחרונה על ידי
                #7

                מעניין מאוד! תודה אברהם.
                חיפשתי מקורות ומצאתי (http://stackoverflow.com/a/267904/1271037).

                הBinarySerialization שונה מאוד מהXML בנקודה זו: הוא ממש מצלם את מצב האובייקט (המשתנים) ובכלל לא ניגש דרך הset של המאפיינים, ואף יצירת האובייקט נעשית בדרך האקרית ללא הפעלת הCounstactor.

                פורסם במקור בפורום CODE613 ב06/07/2015 16:32 (+03:00)

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                תגובה 1 תגובה אחרונה
                1

                בא תתחבר לדף היומי!
                • התחברות

                • אין לך חשבון עדיין? הרשמה

                • התחברו או הירשמו כדי לחפש.
                • פוסט ראשון
                  פוסט אחרון
                0
                • דף הבית
                • קטגוריות
                • פוסטים אחרונים
                • משתמשים
                • חיפוש
                • חוקי הפורום