Сериализация
Atom Ответить
16.11.2010


Добрый день, Михаил.
Пытаюсь воспользоваться вашей сериализацией. Возникло несколько вопросов:1) как объявить XML-атрибут. 2)как объявить корень сериализации( то есть название типа) 3) есть ли у Вас
какая-нить документация по вашей сериализации. Пришлось отказаться от родного XmlSerializer ибо как я узнал он не умеет десериализовать типы типа internal. Вот пример моего кода:
Код

[XmlRoot(ElementName = "result")]
public class CommandResult
{
private static XmlSerializer _serializer;

protected static XmlSerializer Serializer
{
get
{
if (_serializer == null)
{
_serializer = new XmlSerializer(typeof(CommandResult));
}
return _serializer;
}
}

[XmlAttribute("success")]
public bool Success
{
get;
set;
}

[XmlAttribute("transactionid")]
public String TransactionId
{
get;
set;
}

[XmlElement("message")]
public String Message
{
get;
set;
}

[XmlIgnore]
public int? Difference
{
get;
set;
}

[XmlAttribute("diff")]
public String DifferenceAsString
{
get
{
if (Difference == null) return null;
else
return ((int)Difference).ToString();
}
set
{
if (value == null) Difference = null;
else
Difference = int.Parse(value);
}

}

public static CommandResult FromXmlString(String s)
{
s = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + s;
XmlSerializer serializer = Serializer;
MemoryStream str = new MemoryStream(Encoding.UTF8.GetBytes(s));
CommandResult result = (CommandResult)serializer.Deserialize(str);
str.Close();
return result;
}
}

Теги:


Спасибо:




4 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 17.11.2010
Ответить


XmlRootAttribute == EntityAttribute.
XmlElementAttribute == FieldAttribute
XmlIgnoreAttribute == IgnoreAttribute

var serializer = new XmlSerializer<CommandResult>();
serializer.Deserialize(serializer.Serialize(new CommandResult());
Спасибо:

anothar

Фотография
Дата: 17.11.2010
Ответить


А XmlAttribute?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 18.11.2010
Ответить


Андрей Ефимов
А XmlAttribute?


Увы нет. Умеет только в ноды сериализовать.
Спасибо:

anothar

Фотография
Дата: 18.11.2010
Ответить


Печально :( Придется как-нить пошаманить...
Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy