需要使用DataContractSerializer的ReadObject()方法从XML获取布尔值

时间:2011-11-04 15:49:37

标签: xml wcf boolean datacontractserializer

我有一个简单的XML文档,我希望使用.NET中的DataContractSerializer读入对象。

<Person>     <Enabled>true</Enabled>     <Name>John Smith</Name> </Person>

当我读取对象时,即使节点值为“true”,Enabled字段也始终为false。当调用ReadObject()时,如何定义可能反序列化为布尔值的XML?

1 个答案:

答案 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);
    }
}