【发布时间】:2013-09-22 18:32:11
【问题描述】:
我有一个包含数据的测试 xml 文件,并使用适当的属性设置我的对象。我没有收到任何错误,但在反序列化后没有任何对象返回数据。感谢您的帮助。
[DataContract(Name = "level1", Namespace = "")]
public class Level1
{
[DataMember(Name = "level2")]
public Level2 Level2{get;set;}
}
[DataContract(Name = "level2", Namespace = "")]
public class Level2
{
[DataMember(Name = "code")]
public string Code{get;set;}
[DataMember(Name = "global")]
public string Global{get;set;}
}
//Desrilizing Data
DataContractSerializer dcs = new DataContractSerializer(typeof(Level1));
FileStream fs = new FileStream("ExampleData/Example.xml", FileMode.OpenOrCreate);
XmlDictionaryReader reader =
XmlDictionaryReader.CreateTextReader(fs, new XmlDictionaryReaderQuotas());
Level1 p = (Level1)dcs.ReadObject(reader);//Coming back but with no values
XML
<?xml version="1.0" encoding="utf-8" ?>
<level1>
<level2 code="332443553" global="21332"/>
</level1>
【问题讨论】:
-
我希望反序列化而不是序列化,该示例非常适合序列化对象。但我收到了这个 xml 数据并希望反序列化为一个对象
-
我知道,是序列化还是反序列化的情况在这里是外围的。重要的是
DataContractAPI 不支持属性。您要么必须使用实现ISerializable的类,要么使用XmlSerializer。 WCF 中默认使用的 Data Contract Serializer 只是不支持 XML 属性(出于性能原因,正如我之前提供的链接中所注释的那样)。
标签: c# xml deserialization