В приведенном выше методе я считаю, что вам нужно изменить строку:
Children = lv1.Descendants("subcategories")
на:
Children = lv1.Descendants("subcategory")
Если вам нравится XPath, вы, вероятно, могли бы упростить этот код.
Категории первого уровня:
XmlNodeList categories = xmlDoc.SelectNodes("//category"); //assumes there is only one tier of categories.
Затем вы можете приступить к каждой из категорий:
foreach(XmlNode category in categories)
{
XmlNodeList subcategories = category.SelectNodes("./subcategories/subcategory");
}
Таким образом, удаляя большую часть DOM-хождения, вам придется заниматься.Зависит от того, нравится ли вам XPath или нет - но он отлично подходит для этого.