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 XMLLINQ to XMLでは、そのセット内のノードを照会するときに、一連のノードを操作または変更しないようにする必要があります。In LINQ to XMLLINQ 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. 代わりに、 ToList拡張メソッドを使用してList<T> 、それらをに具体化する必要があります。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.

適用対象

こちらもご覧ください