2016-06-21 9 views
0

다음과 같은 xml이 있습니다. 그 xml에서 n 번째 제품 노드를 삭제하고 싶습니다.xdocument에서 n 번째 xelement 삭제 #

나는 이것을 시도했지만 작동하지 않았다.

document.Descendants("products").Descendants("product").Take(1) 

XML이 XML에서 3 제품 노드를 삭제하는 방법

<products> 
    <product> 
     <territory>A</territory> 
    </product> 
    <product> 
     <territory>B</territory> 
    </product> 
    <product> 
     <territory>C</territory> 
    </product> 
    <product> 
     <territory>D</territory> 
    </product> 
    <product> 
     <territory>E</territory> 
    </product> 
</products> 

?

답변

1

. ElementAt을 사용하고 주어진 위치에서 요소를 찾으면 찾을 요소에서 Remove을 호출하여 요소를 제거 할 수 있습니다.

int position = 3; // Specify position. 
    XElement element = XElement.Parse(input); 

    element          
     .Elements("product") 
     .ElementAt(3) 
     .Remove(); 

확인

<products> 
    <product> 
    <territory>A</territory> 
    </product> 
    <product> 
    <territory>B</territory> 
    </product> 
    <product> 
    <territory>C</territory> 
    </product> 
    <product> 
    <territory>E</territory> 
    </product> 
</products> 

OUPUT이 Demo

+0

감사 하리. 두 번째 제품 노드 안의 모든 요소를 ​​제거하고 제품 노드를 삭제하지 않으려는 경우이를 구현하는 방법을 설명하겠습니까? –

+0

당신은 단순히'.Elements.Remove()'를 찾을 수 있습니다, 부모 노드가 아닌 요소를 제거합니다. –

1

색인을 사용하여 하위 노드에 액세스 할 수 없습니다. 한 가지 방법은 다음과 같습니다 나는 XmlLinq를 사용하는 것이 좋습니다

document.Descendants("products").Descendants("product").Skip(2).Take(1);