我有一个简单的XML文档,我希望使用.NET中的DataContractSerializer读入对象。
<Person>
<Enabled>true</Enabled>
<Name>John Smith</Name>
</Person>
当我读取对象时,即使节点值为“true”,Enabled字段也始终为false。当调用ReadObject()时,如何定义可能反序列化为布尔值的XML?
答案 0 :(得分:0)
这完全取决于你如何定义你的课程。如果按如下方式定义,则应正确读取。
public class StackOverflow_8012009
{
const string XML = "<Person><Enabled>true</Enabled><Name>John Smith</Name></Person>";
[DataContract(Namespace = "", Name = "Person")]
public class Person
{
[DataMember]
public bool Enabled { get; set; }
[DataMember]
public string Name { get; set; }
public override string ToString()
{
return string.Format("Person[Enabled={0},Name={1}]", this.Enabled, this.Name);
}
}
public static void Test()
{
DataContractSerializer dcs = new DataContractSerializer(typeof(Person));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(XML));
object obj = dcs.ReadObject(ms);
Console.WriteLine(obj);
}
}