Partager via


Suppression d'éléments, d'attributs et de nœuds d'une arborescence XML

Vous pouvez modifier une arborescence XML en supprimant des éléments, des attributs et d'autres types de nœuds.

La suppression d'un seul élément ou attribut d'un document XML est simple. Toutefois, lors de la suppression de collections d'éléments ou d'attributs, vous devez tout d'abord matérialiser une collection dans une liste, puis supprimer les éléments ou attributs de la liste. La meilleure approche consiste à utiliser la méthode d'extension Remove, qui effectuera cette tâche pour vous.

Cette opération est nécessaire car la plupart des collections que vous récupérez à partir d'une arborescence XML sont produites à l'aide de l'exécution différée. Si vous ne les matérialisez pas tout d'abord dans une liste, ou si vous n'utilisez pas les méthodes d'extension, vous risquez de rencontrer une certaine classe de bogues. Pour plus d'informations, consultez Bogues mixtes code déclaratif/code impératif (C#) (LINQ to XML).

Les méthodes suivantes suppriment des nœuds et des attributs d'une arborescence XML.

Méthode

Description

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

Supprime un objet XAttribute de son parent.

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

Supprime les nœuds enfants d'un objet XContainer.

XElement.RemoveAll

Supprime le contenu et les attributs d'un objet XElement.

XElement.RemoveAttributes

Supprime les attributs d'un objet XElement.

XElement.SetAttributeValue

Supprime l'attribut si vous passez null comme valeur.

XElement.SetElementValue

Supprime l'élément enfant si vous passez null comme valeur.

XNode.Remove

Supprime un objet XNode de son parent.

Extensions.Remove

Supprime chaque attribut ou élément dans la collection source de son élément parent.

Exemple

Description

Cet exemple illustre trois approches de la suppression d'éléments. Tout d'abord, il supprime un seul élément. Ensuite, il récupère une collection d'éléments, les matérialise à l'aide de l'opérateur Enumerable.ToList<TSource>, puis supprime la collection. Pour finir, il récupère une collection d'éléments et les supprime à l'aide de la méthode d'extension Remove.

Pour plus d'informations sur l'opérateur ToList<TSource>, consultez Conversion des types de données.

Code

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)

Commentaires

Ce code génère la sortie suivante :

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

Notez que le premier élément petit-enfant a été supprimé de Child1. Tous les éléments petits-enfants ont été supprimés de Child2 et de Child3.

Voir aussi

Autres ressources

Modification d'arborescences XML (LINQ to XML)