我有一个方法,它接受一个对象并将其转换为一个 XML 字符串。这很好用,但我希望输出 XML 包含对象属性的数据类型(字符串、整数、 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;
}
最佳答案
.NET 中的 XmlSerializer
旨在与自身一起使用具体对象类型重新序列化,以确定它应如何处理来自 XML 的数据。
标准的 XmlSerializer
不会为您序列化该信息。
您应该查看 WCF 的 DataContractSerializer
,据我所知,它更加冗长并且假设更少。它还非常灵活。
关于c# - .Net XmlSerializer 输出数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6474929/