簡體   English   中英

從C#文件中獲取不同節點值的快速方法?

[英]Quick way to get different node values from a file in C#?

我想使用不同變量的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;

我可以用一行代碼還是較少冗余的方式來做到這一點?

好吧,您當然不需要使用查詢表達式-它們大多只是妨礙您使用。 這段代碼會更簡單:

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;

或者,您可以根據需要使用XPath。 XPathSelectElementsXPathEvaluateNode等。)我個人還是比較喜歡使用LINQ to XML提供的查詢方法。

您也可以使用匿名類型:

var res = from xml in xDoc.Descendants("filePath")
          select new
          {
              Title = xml.Descendants("title").FirstOrDefault()?.Value,
              Label = xml.Descendants("label").FirstOrDefault(l => l.Ancestors("sec").Any())?.Value,
              Sec = xml.Descendants("sec").Attributes("id").FirstOrDefault()?.Value
          };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM