我正在使用NLua将Lua嵌入到我的C#应用程序中.
我希望能够直接在Lua中读取XML,但由于我无法在Lua中执行Linq并且我没有找到任何与NLua兼容的库来读取XML,因此我决定使用Linq自己完成.
我想创建一个计算XML文件中元素数量的函数.
这是文件:
<A>
    <B>
        <C>
        </C>
        <C>
        </C>
    </B>
</A>
我想算一下有多少"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"元素的数量.
我怎样才能做到这一点?
谢谢
元素仅返回子元素handler.无论他们身在何处,你都应该让后代得到元素:
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 A/B/C:
handler.XPathSelectElements("A/B/C").Count()
| 归档时间: | 
 | 
| 查看次数: | 1366 次 | 
| 最近记录: |