C#XML序列化/反序列化
我在看看XML序列化,并序列化为这样:C#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;
}
反序列化,我得到一个错误在2,2说无效的XML。任何想法我做错了什么?
感谢
不知道,如果它是一个错字,或在输出真正的错误,但你必须在你的XML错误的空间。
< /ArrayOfInputData>
这是一种类型。已修复。 – 2011-04-14 09:51:10
由于没有进一步的答案即将就此(见我的答案),那么我已经接受你的。明智地付出:) – 2011-04-14 10:30:26
@达伦:谢谢,这非常慷慨。 – 2011-04-14 14:13:18
现在有固定的:
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);
你可以返回T,而不是对象 - 在未来会为你节省一些铸件。 – Travis 2013-12-14 22:43:06
我觉得毫克/公斤失败..我只是缺少knowlage正确解释。但我认为/正在被视为一种“逃避” - 某种东西被称为... ggah我应该闭嘴并停止让自己变傻:P – 2011-04-14 09:56:20
@Levisaxos - 哈.....我不认为就是因为它在2,2中表示无效,如果你还包含标题行,它将是中的A.我认为这是因为它预计可能在那里?我也不确定,因此为什么我把它抛到了精彩的人们身上:) –
2011-04-14 10:03:58