using System.Xml.Serialization;
using System.Collections.Generic;
[XmlRoot(ElementName="param")]
[XmlAttribute(AttributeName="name")]
public string Name { get; set; }
public string Text { get; set; }
[XmlAttribute(AttributeName="unit")]
public string Unit { get; set; }
[XmlRoot(ElementName="item")]
[XmlElement(ElementName="group")]
public string Group { get; set; }
[XmlElement(ElementName="param")]
public List<Param> Params { get; set; }
[XmlElement(ElementName="price")]
public string Price { get; set; }
[XmlElement(ElementName="name")]
public string Name { get; set; }
[XmlAttribute(AttributeName="id")]
public string Id { get; set; }
[XmlRoot(ElementName="items")]
[XmlElement(ElementName="item")]
public List<Item> Item { get; set; }
public static void Main()
<param name=""Width"">100</param>
<param name=""Length"">100</param>
<param name=""Weight"" unit=""gr"">100</param>
<param name=""Width"">200</param>
<param name=""Length"">200</param>
<param name=""Weight"" unit=""gr"">200</param>
<param name=""Weight"" unit=""lbs"">300</param>
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Items));
var items = (Items)xmlSerializer.Deserialize(new StringReader(xml));
Console.WriteLine(string.Format("is param not empty : {0}", items.Item.First().Params.Count == 3));