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. |
Supprime le contenu et les attributs d'un objet XElement. |
|
Supprime les attributs d'un objet XElement. |
|
Supprime l'attribut si vous passez null comme valeur. |
|
Supprime l'élément enfant si vous passez null comme valeur. |
|
Supprime un objet XNode de son parent. |
|
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.