Используя XLinq, вы, похоже, должны знать точное имя дочерних элементов, чтобы получить доступ к определенным дочерним элементам. Я хочу получить доступ / обнаружить непосредственные потомки элемента рекурсивно без такой тесной связи.
если у меня есть:
</ Level1>
При поиске дочерних элементов "root" root.Elements (). Count () возвращает 7 - я хочу 4 (узлы "level1"). Если я спрашиваю root.Elements ("level1"), я получаю 4. Но я должен знать имя дочерних элементов.
Вопрос: Как я могу получить доступ к ближайшим потомкам, не зная этого имени элемента? И это будет в любом рекурсивном месте в дереве XML?
спасибо.
--- добавлено: код
--q1 == 7, q2 == 8 и q3 == 4.
НО, если вы перебираете элементы q3, вы получаете доступ ко всем 7 дочерним узлам, а не к 4, которые я бы хотел. Если это означает необходимость просто ElementAt (#), хорошо. Но объект, кажется, имеет конфликт между тем, что он «видит» как дети.
XElement xel = new XElement(
new XElement("root",
new XElement("level1"),
new XElement("level1"),
new XElement("level1",
new XElement("level2.1"),
new XElement("level2.2",
new XElement("level2.2.1"))),
new XElement("level1")
));
var q1 = from x in xel.Descendants()
select x;
var q2 = from x in xel.DescendantsAndSelf()
select x;
var q3 = from x in xel.Elements()
select x;
foreach (XElement x in q3.Elements())
{
string s = x.ToString();
}