Сериализуемая вещь работает правильно только при совпадении конвенций.
В последнее время я начал использовать LINQ to Xml все больше и больше, поскольку он позволяет мне делать именно то, что я хочу:
var productsXml = XElement.Load(pathXmlFile);
var products = products.Elements("MyProduct").Select(product
select new Product
{
MyProductCode = (string)product.Attribute("MyProductCode"),
MyProductCategory = (string)product.Attribute("MyProductCategory"),
MyProductMaxNumber = (int)product.Attribute("MyProductMaxNumber "),
MyProductLookups = product.Elements("MyProductLookups")
.Elements("MyProductLookup").Select(lookup =>
{
new MyProductLookup()
{
Lang = (string)lookup.Attribute("Lang"),
Value = (string)lookup
}
}
}
Таким образом, вы получаете IEnumerable<Product>
и можете взять его оттуда.