2014-02-15 1 views
2

NLua를 사용하여 C# 응용 프로그램에 Lua를 포함시키고 있습니다.XDocument를 사용하는 하위 요소 수

루아에서 XML을 직접 읽을 수 있기를 원하지만 루아에서 Linq를 실행할 수없고 XML을 읽을 수있는 NLua 호환 라이브러리를 찾지 못해서 직접 해보기로했습니다. 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

를 반환하지만 나는 그것이 예를 들어, 하위 요소에 액세스 할 수 루아에서 쉽게 할 :

reader:CountElement("A.B.C")는 "C"요소의 양을 계산.

어떻게하면됩니까?

당신에게

답변

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처럼 어떤 경로 아래 요소를 계산하려는 경우도 XPath를 사용할 수 있습니다

handler.XPathSelectElements("A/B/C").Count()