Если вы уверены, что у вас будет только три тарифных плана на отель, вы можете загрузить отель в объект типа Отель, например, так:
XDocument data = XDocument.Load(yourXMLFileNameHere);
//if you have a namespace defined:
XNamespace ns = data.Root.Name.Namespace;
List<Hotels> hotels = (from item in data.Descendants(ns + "hotel")
select new Hotel
{
Id=Convert.ToInt32(item.Attribute("id").Value),
Name=item.Attribute("name").Value,
Telephone=item.Element(ns+"telephone").Value,
Fax=item.Element(ns+"fax").Value,
Address=item.Element(ns+"address").Value,
RatePlan1=item.Element(ns+"hotelRatePlan1").Value,
RatePlan2=item.Element(ns+"hotelRatePlan2").Value,
RatePlan3=item.Element(ns+"hotelRatePlan3").Value
}).ToList<Hotels>();
И тогда вы ссылаетесь на свой первый тарифный планследующим образом:
string ratePlan1 = hotels [0] .RatePlan1;
Если количество ваших тарифных планов будет различаться, вы можете объединить их в строку, например:
<hotelRatePlans>10 20 30</hotelRatePlans>
Затем вы меняете способ извлечения тарифных планов, а когда вам нужны фактические планы, вы используете метод String.Split, чтобы получить массив отдельных планов.