我有一个包含1000个object {DynamicData}
的object {System.Collections.Generic.List<object>}
,每个对象都有4个键和值以及一个内部包含2个键和值的List
。
我需要将这个对象序列化成XML文件,但使用普通的序列化会出现异常:The type DynamicData was not expected
,我该如何序列化这个对象?
这是代码:
//output is the name of my object
XmlSerializer xsSubmit = new XmlSerializer(output.GetType());
var xml = "";
using (var sww = new StringWriter())
{
using (XmlWriter writers = XmlWriter.Create(sww))
{
try
{
xsSubmit.Serialize(writers, output);
}
catch (Exception ex)
{
throw;
}
xml = sww.ToString(); // Your XML
}
}
我可以逐行逐个元素地创建XML文件,但我想要更快速、代码更少的方式。
我的对象结构如下:
output (count 1000)
[0]
Costumer - "Costumername"
DT - "Date"
Key - "Key"
Payment - "x"
[0]
Adress - "x"
Number - "1"
[1]...
[2]...
[Serializable]
属性?为什么使用object
而不是具体类型? - JohnyLXmlSerializer
不太适合你想做的事情。首先,如果将你的动态对象视为字典,则XmlSerializer
不直接支持字典。请参见 为什么XmlSerializer
不支持字典? 和 如何将字典进行 XML 序列化。 - dbcXmlSerializer
只会序列化已知的、在白名单中的类型 -- 例如,那些使用[XmlInclude]
包含的类型,如 xsi:type attribute messing up C# XML deserialization 中所示。这是出于安全考虑,它可以防止构造风险类型,比如在 TypeNameHandling caution in Newtonsoft Json 中所描述的那些类型。 - dbc