我正在使用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”,它会正确地归还给我。
但我希望Lua能够轻松访问子元素,例如:
reader:CountElement("A.B.C")
计算“C”元素的数量。
我该怎么做?
谢谢
答案 0 :(得分:5)
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();
}
如果要计算某些路径下的元素,例如A/B/C
:
handler.XPathSelectElements("A/B/C").Count()