我正在使用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"元素的数量.
我怎样才能做到这一点?
谢谢
元素仅返回子元素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)