c# XML序列化/反序列化
本文关键字:反序列化 序列化 XML | 更新日期: 2023-09-27 17:50:21
我正在看一下XML序列化,并已序列化为:
public static string Serialize<T>(T data)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
//Overridden to use UTF8 for compatability with Perl XML::DOM
StringWriterUTF8 sw = new StringWriterUTF8();
xmlSerializer.Serialize(sw, data);
return sw.ToString();
}
我这样使用它:
string serializedData = Serializer.Serialize<List<InputData>>(rawDataCollection);
生产:
<ArrayOfInputData xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<InputData>
<dose>100mg/kg</dose>
<compound>AZ13279746-001</compound>
</InputData>
</ArrayOfInputData>
由于某些原因,我不能包含xml版本1.0编码UTF8的头。
现在,当我尝试用
反序列化时public static object DeSerialize<T>(string data)
{
StringReader rdr = new StringReader(data);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
T i;
i = (T)xmlSerializer.Deserialize(rdr);
return i;
}
我得到一个错误说无效的xml在2,2。知道我做错了什么吗?
谢谢
已修复:
public static object DeSerialize<T>(string data)
{
StringReader rdr = new StringReader(data);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
var result = (T)xmlSerializer.Deserialize(rdr);
return result;
}
var fl = (List<InputData>)Serializer.DeSerialize<List<InputData>>(serializedData);
不确定这是打字错误,还是输出中真正的错误,但是您的XML中有一个错误的空格。
< /ArrayOfInputData>