다음을 통해 공유


XNode.Remove 메서드

정의

부모에서 이 노드를 제거합니다.

public:
 void Remove();
public void Remove ();
member this.Remove : unit -> unit
Public Sub Remove ()

예외

부모 노드가 null인 경우

예제

다음 예제에서는 부모에서 노드를 제거합니다.

XElement xmlTree = new XElement("Root",  
    new XElement("Child1", "child1 content"),  
    new XElement("Child2", "child2 content"),  
    new XElement("Child3", "child3 content"),  
    new XElement("Child4", "child4 content"),  
    new XElement("Child5", "child5 content")  
);  
XElement child3 = xmlTree.Element("Child3");  
child3.Remove();  
Console.WriteLine(xmlTree);  
Dim xmlTree As XElement = _   
        <Root>  
            <Child1>child1 content</Child1>  
            <Child2>child2 content</Child2>  
            <Child3>child3 content</Child3>  
            <Child4>child4 content</Child4>  
            <Child5>child5 content</Child5>  
        </Root>  

Dim child3 As XElement = xmlTree.<Child3>(0)  
child3.Remove()  
Console.WriteLine(xmlTree)  

이 예제는 다음과 같은 출력을 생성합니다.

<Root>  
  <Child1>child1 content</Child1>  
  <Child2>child2 content</Child2>  
  <Child4>child4 content</Child4>  
  <Child5>child5 content</Child5>  
</Root>  

설명

LINQ to XML 프로그래밍에서는 해당 집합의 노드를 쿼리하는 동안 노드 집합을 조작하거나 수정해서는 안 됩니다. 실질적으로 이는 노드 집합을 반복하여 제거해서는 안 된다는 것을 의미합니다. 대신 확장 메서드를 List<T> 사용하여 ToList 를 로 구체화해야 합니다. 그런 다음 목록을 반복하여 노드를 제거할 수 있습니다. 자세한 내용은 혼합 선언적 코드/명령적 코드 버그(LINQ to XML)를 참조하세요.

또는 노드 집합을 제거하려는 경우 메서드를 사용하는 Extensions.Remove 것이 좋습니다. 이 메서드는 노드를 목록에 복사한 다음 목록을 반복하여 노드를 제거합니다.

이 메서드는 및 이벤트를 발생 Changed 시킬 Changing 것입니다.

XContainer 자식 노드를 개체의 XNode Singly 연결 목록으로 저장합니다. 즉, 메서드는 Remove 부모 컨테이너 아래의 직접 자식 노드 목록을 트래버스해야 합니다. 따라서 이 메서드를 사용하면 성능에 영향을 줄 수 있습니다.

적용 대상

추가 정보