我有一个方法,它接受一个对象并将其转换为XML字符串。这很好用,但是我希望输出XML包含对象属性的数据类型(字符串,整数,双精度型等)。我搜索过很多,但没有编写自定义序列化器似乎找不到解决方案。

非常感激任何的帮助。

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;
}

最佳答案

.NET中的XmlSerializer旨在与自身配合使用,使用具体的对象类型来重新序列化,以确定应如何处理XML中的数据。

标准的XmlSerializer不会为您序列化该信息。

您应该查看WCF中的DataContractSerializer,据我所知,它更为冗长且假设更少。它也非常灵活。

关于c# - .Net XmlSerializer输出数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6474929/

10-12 06:19