List< XNode>检索某些属性
本文关键字:属性 检索 XNode List | 更新日期: 2023-09-27 18:15:14
我有以下事件:
private void listBox_Items_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox_Items.SelectedIndex > -1)
{
XDocument xDoc = XDocument.Load(FileName);
var doc = xDoc.Descendants("item")
.Where(x => x.Attribute("id").Value == listBox_Items.Text)
.Select(x => x.Nodes())
.SelectMany(x => x.ToList())
.ToList();
XNode name = doc[0];
XNode id = doc[1];
}
}
我已经让XNode name = doc[0];
得到<name value="Ruby Pouch I" />
但我想要得到Ruby Pouch I
任何反馈都是赞赏的!
如果你只是想选择value
属性,你应该这样做:
var values = xDoc.Descendants("item")
.Where(x => x.Attribute("id").Value == listBox_Items.Text)
.Select(x => x.Attribute("value").Value)
.ToList();
根本不需要调用Nodes()
或SelectMany
。
可能有更好的方法,而不是肯定归零到XNode。
但特别是在你的情况下,你有XNode
在手,值设置为<name value="Ruby Pouch I" />
,类型转换为XElement
,并获得属性值如下:
string value = (name as XElement).Attribute("value").Value;
:
备注:是否可以把它放在For循环中,这样我就不用声明了每一个?
你应该这样做:
foreach(var element in doc.OfType<XElement>)
{
string value = element.Attribute("value").Value;
}
或
var values = doc.OfType<XElement>().Select(el => el.Attribute("value").Value);