获取具有特定元素名称的所有元素

时间:2010-03-08 20:50:19

标签: c# xml linq-to-xml

我的xml看起来像这样:

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

我希望获得名为'sku'

的所有元素

我已经加载了xml的XDocument。

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

或者我会这样做:

doc.Elements("sku")

如果没有元素,我不希望这会返回错误。

3 个答案:

答案 0 :(得分:3)

Elements()仅返回节点的直接子节点。

doc.Descendants("sku");

应该做的伎俩。它沿着后代轴搜索。

答案 1 :(得分:1)

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上!

答案 2 :(得分:0)

您需要该标记名称元素的节点列表:

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