Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在XmlSerializer上使用反序列化时始终为空_C#_Asp.net_.net_Deserialization - Fatal编程技术网

C# 在XmlSerializer上使用反序列化时始终为空

C# 在XmlSerializer上使用反序列化时始终为空,c#,asp.net,.net,deserialization,C#,Asp.net,.net,Deserialization,我想反序列化一些如下所示的XML: XML: <bookings> <booking> <timeStart>2012/7/2 11:00:00</timeStart> <timeEnd>2012/7/2 12:00:00</timeEnd> </booking> <booking>

我想反序列化一些如下所示的XML:

XML:

     <bookings>
        <booking>
           <timeStart>2012/7/2 11:00:00</timeStart>
           <timeEnd>2012/7/2 12:00:00</timeEnd>
        </booking>
        <booking>
            <timeStart>2012/7/10 08:30:00</timeStart>
            <timeEnd>2012/7/10 10:30:00</timeEnd>
        </booking>         
     </bookings>
       var calUrlStr = "http://xxx.com?action=xxxxxx?x=1&y=2";

       HttpWebRequest webRequest = GetWebRequest(calUrlStr);
       HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();

       XmlRootAttribute xRoot = new XmlRootAttribute();
       xRoot.ElementName = "bookings";
       xRoot.IsNullable = true;

       XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyDomain.GCalBooking.GCalBookings), xRoot);

       Stream theStream = response.GetResponseStream();
       StreamReader reader = new StreamReader(theStream);

       MyDomain.GCalBooking.GCalBookings rateResponse = (MyDomain.GCalBooking.GCalBookings)xmlSerializer.Deserialize(reader);
namespace MyDomain.GCalBooking
{
    public class GCalBookings
    {

        public virtual List<Booking> Bookings { get; set; }


    }

    public class Booking
    {

        public string timeStart { get; set; }
        public string timeEnd { get; set; }

    }
}
我的班级:

     <bookings>
        <booking>
           <timeStart>2012/7/2 11:00:00</timeStart>
           <timeEnd>2012/7/2 12:00:00</timeEnd>
        </booking>
        <booking>
            <timeStart>2012/7/10 08:30:00</timeStart>
            <timeEnd>2012/7/10 10:30:00</timeEnd>
        </booking>         
     </bookings>
       var calUrlStr = "http://xxx.com?action=xxxxxx?x=1&y=2";

       HttpWebRequest webRequest = GetWebRequest(calUrlStr);
       HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();

       XmlRootAttribute xRoot = new XmlRootAttribute();
       xRoot.ElementName = "bookings";
       xRoot.IsNullable = true;

       XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyDomain.GCalBooking.GCalBookings), xRoot);

       Stream theStream = response.GetResponseStream();
       StreamReader reader = new StreamReader(theStream);

       MyDomain.GCalBooking.GCalBookings rateResponse = (MyDomain.GCalBooking.GCalBookings)xmlSerializer.Deserialize(reader);
namespace MyDomain.GCalBooking
{
    public class GCalBookings
    {

        public virtual List<Booking> Bookings { get; set; }


    }

    public class Booking
    {

        public string timeStart { get; set; }
        public string timeEnd { get; set; }

    }
}
namespace MyDomain.GCalBooking
{
公务舱预订
{
公共虚拟列表预订{get;set;}
}
公共课预订
{
公共字符串timeStart{get;set;}
公共字符串timeEnd{get;set;}
}
}

xmlementattribtue
添加到您的类中:

public class GCalBookings
{
    [XmlElement("booking")]
    public virtual List<Booking> Bookings { get; set; }
}
公共类GCalBookings
{
[XmlElement(“预订”)]
公共虚拟列表预订{get;set;}
}

旁注:为了帮助调试类似的东西,请尝试填充类,序列化它,然后查看XML的结构。然后,您可以调整类,直到生成的XML看起来像要反序列化的XML。

向类添加
xmlementattribtue

public class GCalBookings
{
    [XmlElement("booking")]
    public virtual List<Booking> Bookings { get; set; }
}
公共类GCalBookings
{
[XmlElement(“预订”)]
公共虚拟列表预订{get;set;}
}

旁注:为了帮助调试类似的东西,请尝试填充类,序列化它,然后查看XML的结构。然后可以调整类,直到生成的XML看起来像要反序列化的XML。

问题是,反序列化程序不使用list属性的SET方法,而是通过GET方法,然后为每个项调用ADD。这意味着,物业预订必须通过ctor进行初始化


问题是,反序列化程序不使用list属性的SET方法,而是通过GET方法,然后为每个项调用ADD。这意味着,物业预订必须通过ctor进行初始化