使用XDocument计算子元素的数量

Adr*_*veu 2 c# xml linq lua

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

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

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

这是文件:

<A>
    <B>
        <C>
        </C>
        <C>
        </C>
    </B>
</A>
Run Code Online (Sandbox Code Playgroud)

我想算一下有多少"C"元素.

这是我的C#功能:

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

    return eltNames.Count();
}
Run Code Online (Sandbox Code Playgroud)

如果我用参数"C"调用它,它将不会返回任何内容."B"相同.但对于"A",它会正确地归还给我1.

但我希望Lua能够轻松访问子元素,例如:

reader:CountElement("A.B.C") 计算"C"元素的数量.

我怎样才能做到这一点?

谢谢

Ser*_*kiy 5

元素仅返回子元素handler.无论他们身在何处,你都应该让后代得到元素:

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

    return eltNames.Count();
}
Run Code Online (Sandbox Code Playgroud)

或者以较短的方式相同

public int CountElement(string elementName)
{    
    return handler.Descendants(elementName).Count();
}
Run Code Online (Sandbox Code Playgroud)

如果你想在某些路径下计算元素,你也可以使用XPath A/B/C:

handler.XPathSelectElements("A/B/C").Count()
Run Code Online (Sandbox Code Playgroud)