C# 无法反序列化XML
我有下面的代码,但无法反序列化,你能看到我哪里出错了吗?它只捕获第一个数组项上的第一条记录C# 无法反序列化XML,c#,xml,deserialization,C#,Xml,Deserialization,我有下面的代码,但无法反序列化,你能看到我哪里出错了吗?它只捕获第一个数组项上的第一条记录 [XmlRootAttribute("Booking")] public class Reservation { [XmlArray("Included")] [XmlArrayItem("Meals")] public Meals[] Food { get; set; } [
[XmlRootAttribute("Booking")]
public class Reservation
{
[XmlArray("Included")]
[XmlArrayItem("Meals")]
public Meals[] Food { get; set; }
[XmlArrayItem("Drinks")]
public Drinks[] Drink { get; set; }
}
public class Meals
{
[XmlAttribute("Breakfast")]
public string Breakfast { get; set; }
[XmlAttribute("Lunch")]
public string Lunch { get; set; }
[XmlAttribute("Dinner")]
public string Dinner { get; set; }
}
public class Drinks
{
[XmlAttribute("Soft")]
public string Softs { get; set; }
[XmlAttribute("Beer")]
public string Beer { get; set; }
[XmlAttribute("Wine")]
public string Wine { get; set; }
}
下面是相关的XML
<?xml version="1.0" standalone="yes"?>
<Booking>
<Included>
<Meals
Breakfast="True"
Lunch="True"
Dinner="False">
</Meals>
<Drinks
Soft="True"
Beer="False"
Wine="False">
</Drinks>
</Included>
<Included>
<Meals
Breakfast="True"
Lunch="False"
Dinner="False">
</Meals>
<Drinks
Soft="True"
Beer="True"
Wine="True">
</Drinks>
</Included>
</Booking>
我是一个新手,所以任何帮助都是非常好的,不幸的是,在浏览了您已经在线上的许多Exmaple之后,我仍然无法理解这一点。使用以下示例并在
列表项中应用此语法
[XmlType("device_list")]
[Serializable]
public class DeviceList {
[XmlAttribute]
public string type { get; set; }
[XmlElement( "item" )]
public ListItem[] items { get; set; }
}
以下链接包含所有语法和属性
我看不出有什么明显的方法可以将类结构与XML文档相匹配。底层组织似乎大不相同
以下类层次结构可以很容易地从您提供的XML文档反序列化(假设您的文档涵盖了一般情况):
@user1641194抱歉,没有看到您的评论。我猜你现在明白了。我还是更新了我的答案。
[Serializable]
[XmlRoot("Booking")]
public class Booking : List<Included>
{
}
[Serializable]
public class Included
{
public Meals Meals { get; set; }
public Drinks Drinks { get; set; }
}
public class Meals
{
[XmlAttribute("Breakfast")]
public string Breakfast { get; set; }
[XmlAttribute("Lunch")]
public string Lunch { get; set; }
[XmlAttribute("Dinner")]
public string Dinner { get; set; }
}
public class Drinks
{
[XmlAttribute("Soft")]
public string Softs { get; set; }
[XmlAttribute("Beer")]
public string Beer { get; set; }
[XmlAttribute("Wine")]
public string Wine { get; set; }
}
XmlSerializer ser = new XmlSerializer(typeof (string));
XmlReader reader = XmlTextReader.Create(new StringReader(serializedObject));
var myBooking = ser.Deserialize(reader) as Booking;