使用XDocument类读取xml数据

use*_*901 2 linq linq-to-xml c#-3.0

我有一个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>
Run Code Online (Sandbox Code Playgroud)

现在,如果

我指定name ="String1",我应该得到"描述number1"的值

我指定name ="String2",我应该将值作为描述number2

我正在尝试这种方法,没有结果

 XDocument doc = XDocument.Load(@"D:\test.xml");
 string search = "String10";

 var lv1s = from lv1 in doc.Descendants("data")
            select lv1.Name;
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 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
Run Code Online (Sandbox Code Playgroud)

如果没有一个结果,你应该考虑你想要发生什么.这是一个错误状态(如果是这样,使用Single()),如果你使用所有结果(如果是这样,只是迭代query),你应该使用第一个结果(如果可用),否则忽略它(如果是,请使用FirstOrDefault()并检查是否如果您使用第一个结果,则结果为null),如果没有,则为错误(如果是,请使用First()).