1. C# / Говнокод #13357

    +132

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    /// <summary>
            ///  Десериализация класса грунтов
            /// </summary>
            public static SGGlist DeserializeSgg(XmlDocument doc)
            {
                string dir = System.IO.Path.GetTempPath();
    
                try
                {
                    doc.Save(dir + "_sgg.xml");
                }
                catch (Exception exc)
                {
                    Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog("Ошибка сброса XML-документа в файл");
                    return null;
                }
    
                SGGlist sggList = new SGGlist();
    
                FileStream fs;
                try
                {
                    fs = new FileStream(dir + "_sgg.xml", FileMode.Open);                                          // инициализация объекта класса чтения файла
                }
                catch (Exception exc)
                {
                    Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog("Ошибка чтения XML-файла");
                    return null;
                }
    
                XmlSerializer r_serializer = new XmlSerializer(typeof(SGGlist));                                // инициализация объекта класса десериализации 
                r_serializer.UnknownNode += new XmlNodeEventHandler(r_serializer_UnknownNode);                  // подключение события обнаружения неизвестного узла 
                r_serializer.UnknownAttribute += new XmlAttributeEventHandler(r_serializer_UnknownAttribute);   // подключение события обнаружения неизвестного атрибута
    
                try
                {
                    sggList = (SGGlist)r_serializer.Deserialize(fs);                                            // Десериализация в класс приема данных
                }
                catch (Exception exc)                                                                                           // Исключение при десериализации
                {
                    Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog("Рассогласование классов");
                    fs.Close();
                    return null;
                }
    
                fs.Close();
    
                return sggList;
            }

    Запостил: diimdeep , 10 Июля 2013

    Комментарии (9) RSS

    • Толстый, толстый метод получится... Аж с 3мя секциями EHTable...
      Я понимаю, у коллеги иначе не получилось преобразовать XML из памяти в объект SGGlist и он это сделал через файловую систему?
      Ответить
      • Похоже прогер твердо знал как получить SGGlist из FileStream а и решил не париться, а просто "поставить чайник на плиту"
        Ответить
        • А почему нельзя было сделать через MemoryStream или Stream? Какой-то особый способ нужен?
          Ответить
          • Предположу что именно потому что можно было сделать этими способами данный код и выложен тут на сайте.
            Ответить
            • Я думал, что там и правда что-то серьезное, раз он взял FileStream. А вообще это настолько очевидные вещи...
              Ответить
    • На уровне грунта местоположение, кхм.
      Ответить
    • И тут эта сперморешётка. Почему бы не использовать лисп как единственный нормальный скриптовый язык?
      Ответить

    Добавить комментарий