다음을 통해 공유


XML 트리에서 요소, 특성 및 노드 제거

XML 트리를 수정하여 요소, 특성 및 다른 형식의 노드를 제거할 수 있습니다.

XML 문서에서 요소나 특성을 하나만 제거하는 것은 간단합니다. 그러나 요소나 특성의 컬렉션을 제거하는 경우 먼저 컬렉션을 목록으로 구체화한 다음 요소나 특성을 목록에서 삭제해야 합니다. 가장 좋은 방법은 이 작업을 수행하는 Remove 확장 메서드를 사용하는 것입니다.

이렇게 하는 주요 이유는 XML 트리에서 검색하는 대부분의 컬렉션이 지연된 실행을 사용하여 생성되기 때문입니다. 컬렉션을 먼저 목록으로 구체화하지 않거나 확장 메서드를 사용하지 않는 경우 특정 유형의 버그가 발생할 수 있습니다. 자세한 내용은 혼합된 선언적 코드/명령적 코드 버그(C#)(LINQ to XML)를 참조하십시오.

다음 메서드는 XML 트리에서 노드와 특성을 제거합니다.

메서드

설명

[M:System.Xml.Linq.XAttribute.Remove()]

부모에서 XAttribute를 제거합니다.

[M:System.Xml.Linq.XContainer.RemoveNodes()]

XContainer에서 자식 노드를 제거합니다.

XElement.RemoveAll

XElement에서 내용과 특성을 제거합니다.

XElement.RemoveAttributes

XElement의 특성을 제거합니다.

XElement.SetAttributeValue

값으로 null을 전달하면 특성을 제거합니다.

XElement.SetElementValue

값으로 null을 전달하면 자식 요소를 제거합니다.

XNode.Remove

부모에서 XNode를 제거합니다.

Extensions.Remove

부모 요소에서 소스 컬렉션의 모든 특성이나 요소를 제거합니다.

예제

설명

이 예제에서는 요소를 제거하는 세 가지 방법을 보여 줍니다. 첫째, 단일 요소를 제거합니다. 둘째, 요소의 컬렉션을 검색하고 Enumerable.ToList<TSource> 연산자를 사용하여 구체화한 다음 제거합니다. 마지막으로, 요소의 컬렉션을 검색하고 Remove 확장 메서드를 사용하여 제거합니다.

ToList<TSource> 연산자에 대한 자세한 내용은 데이터 형식 변환을를 참조하십시오.

코드

XElement root = XElement.Parse(@"<Root>
    <Child1>
        <GrandChild1/>
        <GrandChild2/>
        <GrandChild3/>
    </Child1>
    <Child2>
        <GrandChild4/>
        <GrandChild5/>
        <GrandChild6/>
    </Child2>
    <Child3>
        <GrandChild7/>
        <GrandChild8/>
        <GrandChild9/>
    </Child3>
</Root>");
root.Element("Child1").Element("GrandChild1").Remove();
root.Element("Child2").Elements().ToList().Remove();
root.Element("Child3").Elements().Remove();
Console.WriteLine(root);
Dim root As XElement = _
    <Root>
        <Child1>
            <GrandChild1/>
            <GrandChild2/>
            <GrandChild3/>
        </Child1>
        <Child2>
            <GrandChild4/>
            <GrandChild5/>
            <GrandChild6/>
        </Child2>
        <Child3>
            <GrandChild7/>
            <GrandChild8/>
            <GrandChild9/>
        </Child3>
    </Root>
root.<Child1>.<GrandChild1>.Remove()
root.<Child2>.Elements().ToList().Remove()
root.<Child3>.Elements().Remove()
Console.WriteLine(root)

설명

이 코드는 다음과 같이 출력됩니다.

<Root>
  <Child1>
    <GrandChild2 />
    <GrandChild3 />
  </Child1>
  <Child2 />
  <Child3 />
</Root>

Child1에서는 첫 번째 손자 요소가 제거되었고, Child2와 Child3에서는 모든 손자 요소가 제거되었습니다.

참고 항목

기타 리소스

XML 트리 수정(LINQ to XML)