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 使用することをお勧めします。 このメソッドは、ノードをリストにコピーし、リストを反復処理してノードを削除します。

このメソッドは、 イベントと イベントをChanging発生させますChanged

XContainer 、その子ノードを 1 つのリンクされたオブジェクトの XNode リストとして格納します。 つまり、 メソッドは Remove 親コンテナーの下にある直接子ノードの一覧を走査する必要があります。 したがって、この方法を使用すると、パフォーマンスに影響を与える可能性があります。

適用対象

こちらもご覧ください