Сериализация объекта данных в строку XML и десериализация
Для того чтобы сериализовать объект данных необходимо подключить сборку ICSSoft.STORMNET.Tools. Для преобразования в XML предназначен класс ToolXML
данной сборки, который поддерживает два варианта сериализации, описанные далее.
Сериализация объектов данных специальным способом
Специальные методы ToolXML для DataObject:
DataObject2XMLDocument
- конвертация объекта данных кXmlDocument
,XMLDocument2DataObject
- обратное преобразование.
Есть возможность при сериализации объекта данных сериализовать также и мастера, а не только его тип и первичный ключ, путём передачи соответствующих флагов при вызове метода.
Методы DataObject2XMLDocument
и XMLDocument2DataObject
описаны в статье.
Note: Все использующиеся типы данных должны возвращать значение по
ToString()
, а также иметь статический метод Parse
, конструирующий новый экземпляр. Note: В метод
ToolXML.XMLDocument2DataObject()
обязательно нужно передавать сконструированный объект данных, иначе произойдёт ArgumentNullException
.Пример сериализации и десериализации объекта данных.
DataObject sdo = new SimpleDataObject();
((SimpleDataObject)sdo).Name="Simple data object name";
((SimpleDataObject)sdo).IntAttr = 991;
XmlDocument xmldoc = ToolXML.DataObject2XMLDocument(ref sdo);
Console.WriteLine("SimpleDataObject in XML:");
Console.WriteLine(xmldoc.InnerXml);
DataObject sdorestoredfromxml = new SimpleDataObject();
ToolXML.XMLDocument2DataObject(ref sdorestoredfromxml, xmldoc);
Console.WriteLine("Restored SimpleDataObject Name:");
Console.WriteLine( ((SimpleDataObject)sdorestoredfromxml).Name );
Console.Read();
Сериализация на основе SOAP
ToolXML поддерживает метод для SOAP-сериализации. Этот вариант менее привлекателен, поскольку выходная строка содержит много лишней информации и объект данных должен быть помечен атрибутом Serializable
Пример сериализации и десериализации объекта данных.
DataObjectWithKeyGuid dataObjectWithKeyGuid = new DataObjectWithKeyGuid();
KeyGuid g = Guid.NewGuid();
dataObjectWithKeyGuid.LinkToMaster = g;
Console.WriteLine("Записали Guid " + dataObjectWithKeyGuid.LinkToMaster);
var serializedObj = ToolXML.ObjectToString(dataObjectWithKeyGuid);
DataObjectWithKeyGuid dObjFromXML = (DataObjectWithKeyGuid)ToolXML.ObjectFromString(serializedObj);