我有一个xml文件说(test.xml)
<root loc-ver="1.0">
<data name="String1" xml:space="preserve">
<value loc="root_data_value_2">Description number1</value>
</data>
<data name="String2" xml:space="preserve">
<value loc="root_data_value_3">Description number 2</value>
</data>
</root>
现在,如果
我指定name =“String1”,我应该将值作为“Description number1”
我指定name =“String2”,我应该将值作为Description number2
我正在尝试这种方法,没有结果
XDocument doc = XDocument.Load(@"D:\test.xml");
string search = "String10";
var lv1s = from lv1 in doc.Descendants("data")
select lv1.Name;
答案 0 :(得分:5)
听起来像你想要的那样:
string name = "String1"; // Or whatever
var query = from data in doc.Descendants("data")
where (string) data.Attribute("name") == name
select (string) data.Element("value");
string description = query.First(); // Or FirstOrDefault etc
如果没有一个结果,你应该考虑你想要发生什么。这是一个错误状态(如果是这样,使用Single()
),如果您使用所有结果(如果是,只是迭代query
),如果您使用第一个结果,如果它可用,否则忽略它(如果是这样,使用FirstOrDefault()
并检查结果是否为空),是否应该使用第一个结果,如果没有任何结果则是错误(如果是这样的话) ,使用First()
)。