XNode.Remove メソッド

定義

現在のノードを親から削除します。Removes this node from its parent.

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

例外

親は null になります。The parent is null.

次の例では、ノードをその親から削除します。The following example removes a node from its parent.

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)  

この例を実行すると、次の出力が生成されます。This example produces the following output:

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

注釈

LINQ to XML プログラミングでは、そのセット内のノードを照会するときに、一連のノードを操作または変更しないようにしてください。In LINQ to XML programming, you should not manipulate or modify a set of nodes while you are querying for nodes in that set. 実際には、ノードのセットを反復処理して削除しないことを意味します。In practical terms, this means that you should not iterate over a set of nodes and remove them. 代わりに、拡張メソッドを使用して、それらをに具体化する必要があり List<T> ToList ます。Instead, you should materialize them into a List<T> by using the ToList extension method. 次に、リストを反復処理してノードを削除できます。Then, you can iterate over the list to remove the nodes. 詳細については、「 宣言型コードと命令型コードの混在のバグ (LINQ to XML)」を参照してください。For more information, see Mixed Declarative Code/Imperative Code Bugs (LINQ to XML).

または、一連のノードを削除する場合は、メソッドを使用することをお勧め Extensions.Remove します。Alternatively, if you want to remove a set of nodes, it is recommended that you use the Extensions.Remove method. このメソッドは、ノードをリストにコピーしてから、リストを反復処理してノードを削除します。This method copies the nodes to a list, and then iterates over the list to remove the nodes.

このメソッドは、イベントとイベントを発生させ Changed Changing ます。This method will raise the Changed and the Changing events.

は、 XContainer その子ノードをオブジェクトのシングルリンクリストとして格納し XNode ます。The XContainer stores its child nodes as a singly-linked list of XNode objects. これは、 Remove メソッドが親コンテナーの下にある直接の子ノードのリストを走査する必要があることを意味します。This means that the Remove method must traverse the list of direct child nodes under the parent container. したがって、この方法を使用すると、パフォーマンスに影響を与える可能性があります。Therefore, using this method might affect your performance.

適用対象