получить все элементы, которые имеют конкретное имя элемента - PullRequest
1 голос
/ 08 марта 2010

Мой xml выглядит так:

<nodes><skus><sku>abc</sku><sku>def123</sku></skus></nodes>

Я хочу получить все элементы с именем 'sku'

У меня уже есть XDocument с xml.

List<XElement> elements = doc.Elements.Where( ??? )

или я бы просто сделал:

doc.Elements("sku")

Я не хочу, чтобы это возвращало ошибку, если нет элементов.

Ответы [ 3 ]

3 голосов
/ 08 марта 2010

Elements() возвращает только прямые дочерние элементы узла.

doc.Descendants("sku");

должен добиться цели. Поиск по оси потомков.

1 голос
/ 08 марта 2010
static void Main(string[] args)
{
    var g = XDocument.Parse("<nodes><skus><sku>abc</sku><sku>def123</sku></skus></nodes>");
    var t = from e in g.Descendants("sku")
    select e;
}

РЕДАКТИРОВАТЬ: я начал этот пример, но был прерван - я полон решимости получить этот код на SO, даже если он убивает меня !!

0 голосов
/ 08 марта 2010

Вы хотите нодлист из элементов этого имени тега:

XmlNodeList nodes = doc.GetElementsByTagName("sku");
...