如何在具有LINQ-to-XML的元素之后获取第一个元素?

使用此代码,我可以从以下XML文件中获取标题:

var xml = XElement.Load (@"C:\\test\\smartForm-customersMain.xml"); string title = xml.Element("title").Value; 

但是我如何使它更精确,例如“获取smartForm元素之后的第一个元素 ,例如:

 //PSEUDO-CODE: string title = xml.Element("smartForm").FirstChild("title"); 

XML:

   Customers Main222 Generic customer form.                                

您想使用Descendants轴方法,然后调用FirstOrDefault扩展方法来获取第一个元素。

这是一个简单的例子:

 using System; using System.Linq; using System.Xml.Linq; class Program { static void Main() { String xml = @"  Customers Main222 Generic customer form.                               "; XElement element = XElement.Parse(xml) .Descendants() .FirstOrDefault(); } } 

如果你不知道smartForm是否是根元素但是仍然需要第一个这样的条目的标题文本,你可以使用:稍微添加安德鲁的答案:

 xml.DescendantsAndSelf("smartForm").Descendants("title").First().Value; 

要求有一个smartForm元素,其中包含title元素。

如果你想确保title元素是smartForm直接子元素,你可以使用:

 xml.DescendantsAndSelf("smartForm").Elements("title").First().Value; 

如果您不关心title的名称是什么,只是想要第一个子元素,那么您将使用:

 xml.DescendantsAndSelf("smartForm").Elements().First().Value; 

我的任务是找到指定名称的第一个孩子。 如果xml使用名称空间,而不是使用名称空间

 e.Elements(name).FirstOrDefault() 

 e.Elements().FirstOrDefault(i => i.Name.LocalName == name)