使用XDocument计算子元素的数量

我正在使用NLua将Lua嵌入到我的C#应用程序中。

我希望能够直接在Lua中读取XML,但是由于我无法在Lua中执行Linq,并且我还没有找到任何兼容NLua的用于读取XML的库,因此我决定自己使用Linq来实现。

我想创建一个函数来计算XML文件中元素的数量。

这是文件:

`` '

`` '

我想计算有多少个“C”元素。

这是我的C#函数:

`` ' public int CountElement(string elementName) { var eltNames = from elt in handler.Elements(elementName) select elt;

return eltNames.Count();

}

`` '

如果我使用参数“C”调用此函数,它将不会返回任何内容。同样适用于“B”。但对于“A”,它将正确地返回1。

但是,我希望在Lua中很容易访问子元素,例如:

'reader:CountElement(“A.B.C”)',以计算“C”元素的数量。

我该怎么办?

谢谢

点赞
用户470005
用户470005

Elements 只会返回 handler 的子元素。如果想获取无论在哪里的元素,需要使用 descendants.

public int CountElement(string elementName)
{
    var eltNames = from elt in handler.Descendants(elementName)
                   select elt;

    return eltNames.Count();
}

或者更短的方式

public int CountElement(string elementName)
{
    return handler.Descendants(elementName).Count();
}

如果想要计算某个路径下的元素数,也可以使用 XPath:

handler.XPathSelectElements("A/B/C").Count()
2014-02-15 17:09:44