Тип выходных данных .Net XmlSerializer - PullRequest
2 голосов
/ 25 июня 2011

У меня есть метод, который берет объект и превращает его в строку XML. Это прекрасно работает, но я хочу, чтобы выходной XML включал тип данных свойств объекта (string, int, double и т. Д.). Я искал все выше и ниже, но я не могу найти решение, не написав собственный сериализатор.

Любая помощь будет наиболее ценной.

private static string ToXML<t>(t obj, bool indent = false)
{
    System.Xml.Serialization.XmlSerializerNamespaces ns = new System.Xml.Serialization.XmlSerializerNamespaces();
    XmlSerializer xs = new XmlSerializer(typeof(t));
    StringBuilder sbuilder = new StringBuilder();
    var xmlws = new System.Xml.XmlWriterSettings() {OmitXmlDeclaration = true, Indent = indent};

    ns.Add(string.Empty, string.Empty);

    using (var writer = System.Xml.XmlWriter.Create(sbuilder, xmlws))
    {
        xs.Serialize(writer, obj, ns);
    }

    string result = sbuilder.ToString();

    ns = null;
    xs = null;
    sbuilder = null;
    xmlws = null;

    return result;
}

1 Ответ

1 голос
/ 25 июня 2011

XmlSerializer в .NET предназначен для работы с собой для повторной сериализации, используя конкретный тип объекта, чтобы определить, как он должен обрабатывать данные из XML.

Стандарт XmlSerializer не будет сериализовать эту информацию для вас.

Вы должны посмотреть на DataContractSerializer из WCF, насколько я помню, он гораздо более многословен и предполагает меньше. Это также очень гибкий.

...