与java中的XStream具有相同功能的C#序列化器/反序列化器
我需要完成非常简单的任务:序列化和反序列化对象层次结构
我试过XMLSerializer
,DataContractSerializer
,NetDataContractSerializer
但似乎没有任何效果,总是有一些问题
XMLSerializer
不好,因为它要求所有属性都是公共的。
(Net)DataContractSerializer是坏的,因为它总是缺少一些元数据—但当用户创建XML时,没有元数据
那么,您将如何解决此任务?考虑类:
class A {
private B instanceB;
private int integerValue;
... getters/setters
}
class B {
private List<C> cInstanceList;
private string stringValue;
... getters/setters
}
class C {
... some other properties
... getters/setters
}
和用户输入:
<A>
<B>
<cInstanceList>
<C>
<someproperties>val</someproperties>
</C>
<C>
<someproperties>differentVal</someproperties>
</C>
</cInstanceList>
<strigValue>lalala<stirngValue>
</B>
<integerValue>42</integerValue>
</A>
{
public T Deserialize<T>(string xml);
我想要的用例:
var myDeserializedObject = Deserialize<A>(inputString);
我做错了什么?你会用不同的方法解决吗
# 1 楼答案
没有序列化程序将修复键入错误;)。这对我使用DataContractSerializer很有效 XML(text.XML)
班级
阅读
如果您编写它,它将添加xmlns:i=”http://www.w3.org/2001/XMLSchema-instance“但是没有什么区别,如果你真的需要的话,你可以把它去掉