从C#中的文件中获取不同节点值的快捷方法?

Bum*_*mba 2 c# linq-to-xml

我想在不同的变量中使用不同的xml文件条件来获取不同节点的值.以下是一个例子

XDocument doc = XDocument.Load(@"D:\MyFiles\test.xml", LoadOptions.PreserveWhitespace);
var a = (from x in doc.Descendants("title")
         select x).First().Value;
var b = (from y in doc.Descendants("label")  
         where y.Ancestors("sec").Any()
         select y).First().Value;
var c = (from z in doc.Descendants("sec").Attributes("id")
         select z).First().Value;
Run Code Online (Sandbox Code Playgroud)

我可以在一行代码中执行此操作,还是以不太冗余的方式执行此操作?

Jon*_*eet 6

那么你肯定不需要使用查询表达式 - 它们大多只是妨碍了.这段代码更简单:

XDocument doc = XDocument.Load(@"D:\MyFiles\test.xml",LoadOptions.PreserveWhitespace);
var a = doc.Descendants("title").First().Value;
var b = doc.Descendants("label").First(y => y.Ancestors("sec").Any()).Value;
var c = doc.Descendants("sec").Attributes("id").First().Value;
Run Code Online (Sandbox Code Playgroud)

或者,如果需要,可以使用XPath.(XPathSelectElements,XPathEvaluateNode等等),我个人更喜欢保持到使用LINQ虽然提供的XML查询方法.