我有以下XML,我试图根据父类的属性提取子类别的值,并将它们放在组合框中。
XML
问题是在我运行此代码(下面)后,它只返回第一个元素值(在本例中为Major)。我有什么明显的遗失吗?
班级
public static List<string> GetScalesComboBox()
{
XElement xelement = XElement.Load("data/static/Categories.xml");
var querylist = new List<String>();
var Subcat = from a in xelement.Elements("Cat")
where (string)a.Attribute("id") == "Scales"
select a;
foreach (XElement e in Subcat)
{
string Cate = e.Element("Subcat").Value;
querylist.Add(Cate);
}
return querylist;
}
并使用它进入组合框
List<String> ScaleComboList = XMLUtility.GetScalesComboBox();
for (int i = 0; i < ScaleComboList.Count; i++)
{
CMB_SubCategory.AddItem(ScaleComboList[i]);
}
CMB_SubCategory.selectedIndex = 0;
CMB_SubCategory.Enabled = true;
任何帮助都会很棒。感谢。
答案 0 :(得分:1)
在foreach
循环中,在string Cate = e.Element("Subcat").Value
行中,您只选择 第一个元素。您可以尝试将循环更改为
(XElement e in Subcat.Elements())
,它将遍历所有子元素。
之后,将循环体改为querylist.Add(e.Value);
完整代码:
foreach (XElement e in Subcat.Elements())
querylist.Add(e.Value);