2014-04-08 4 views
0

나는 Linq를 XML로 선택하는 글을 쓰고 당신이 나를 도울 수 있기를 바랍니다.자손이 특수한 속성을 가진 요소를 선택하는 방법

내 XML처럼 보이는 다음

<parent> 
    <child name="ID">0</child> 
    <child name="Name">Test 1</child> 
</parent> 
<parent> 
    <child name="ID">0</child> 
    <child name="Name">Test 3</child> 
</parent> 
: 내가 얻을 수 있도록

<myXML> 
    <parent> 
     <child name="ID">0</child> 
     <child name="Name">Test 1</child> 
    </parent> 
    <parent> 
     <child name="ID">1</child> 
     <child name="Name">Test 2</child> 
    </parent> 
    <parent> 
     <child name="ID">0</child> 
     <child name="Name">Test 3</child> 
    </parent> 
    <parent> 
     <child name="ID">2</child> 
     <child name="Name">Test 4</child> 
    </parent> 
</myXML> 

내가 다음 다시, ID = 0 속성이 거기에 아이를 가진 모든 부모 요소를 선택하려고

XML이 매우 크기 때문에 select가 효율적이어야합니다. 당신의 도움을 주셔서 감사합니다!!!

감사

답변

0

이 시도 :

var query = 
    from p in xd.Root.Elements("parent") 
    where p 
     .Elements("child") 
     .Any(c => 
      c.Attribute("name").Value == "ID" 
      && c.Value == "0") 
    select p; 
0

로드 후/XDocument에 문서를 구문 분석, 성능, 내가 XPath을 사용,

var elements = document 
    .XPathSelectElements("/myXML/parent[normalize-space(child[@name='ID'])='0']"); 

즉, 다음과 같이 "모든 찾기 parent 요소는 child이고 속성 이름은 ID이고 트리밍 된 요소 0 값 "

관련 문제