Непонятно, что вы на самом деле имеете в виду, но это то, что вы ищете?
public IEnumerable<XElement> PathDescendants(
this XElement element,
params XName[] names)
{
return new[] { element }.PathDescendants(names);
}
public IEnumerable<XElement> PathDescendants(
this IEnumerable<XElement> elements,
params XName[] names)
{
return names.Aggregate(elements,
(current, name) => current.Descendants(name));
}
Тогда вы можете позвонить:
string result = xml.Root.PathDescendants("XYZ", "ABC", "MNO").Single().Value;