使用XDocument类读取xml数据

时间:2011-12-15 09:12:08

标签: linq c#-3.0 linq-to-xml

我有一个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;

1 个答案:

答案 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())。