我有以下xml片段,我希望能够提取名为elements“V”attribute ==“gender”的“Field”元素。然后我想返回“list_value”元素,以便我可以迭代它们并将它们添加到observableCollection以便在下拉列表中显示...我还没有能够只检索这个条件...任何想法?
<Field order="8">
<name V="gender"/>
<data_type V="list"/>
<req_or_optional V=""/>
<list_value>
<item0 V="F"/>
<item1 V="M"/>
<item1 V="U"/>
</list_value>
</Field>
<Field order="9">
<name V="date_of_birth"/>
<data_type V="string"/>
<req_or_optional V=""/>
</Field>
我开始使用此查询:
XElement gender = justFields.Elements("name").Where(x => (string)x.Attribute("V") == "gender").SingleOrDefault();
这只返回“name”元素......
非常感谢! 哈罗德
答案 0 :(得分:1)
var collection = xDoc.Descendants("Field").Single(elt => elt.Element("name").Attribute("V").Value == "gender").Element("list_value").Elements();
然后,如果你只想获得“M”,“F”和“U”,只需添加
.Select(elt => elt.Attribute("V").Value);