如何在具有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)