Gérer les paires nom-valeur (LINQ to XML)

De nombreuses applications doivent garder des informations qui sont les mieux conservées en tant que paires nom-valeur. Il peut s'agir d'informations de configuration ou de paramètres globaux. LINQ to XML contient des méthodes qui facilitent la gestion d’un ensemble de paires nom-valeur. Vous pouvez conserver les informations en tant qu'attributs ou en tant qu'ensemble d'éléments enfants.

L'une des différences est qu'il ne peut y avoir qu'un seul attribut avec un nom donné pour un élément. Cette limitation ne s’applique pas aux éléments enfants.

SetAttributeValue et SetElementValue

Les deux méthodes qui facilitent la conservation des paires nom-valeur sont SetAttributeValue et SetElementValue. Ces deux méthodes ont une sémantique similaire.

SetAttributeValue peut ajouter, modifier et supprimer des attributs d’un élément.

  • Si vous appelez SetAttributeValue avec un nom d’attribut qui n’existe pas, la méthode crée un nouvel attribut et l’ajoute à l’élément spécifié.
  • Si vous appelez SetAttributeValue avec un nom d'un attribut existant et avec du contenu spécifié, le contenu de l'attribut est remplacé par le contenu spécifié.
  • Si vous appelez SetAttributeValue avec un nom d’attribut existant et spécifiez null pour le contenu, l’attribut est supprimé de son parent.

SetElementValue peut ajouter, modifier et supprimer des éléments enfants d’un élément.

  • Si vous appelez SetElementValue avec un nom d’élément enfant qui n’existe pas, la méthode crée un élément et l’ajoute à l’élément spécifié.
  • Si vous appelez SetElementValue avec un nom d'un élément existant et avec du contenu spécifié, le contenu de l'élément est remplacé par le contenu spécifié.
  • Si vous appelez SetElementValue avec un nom d’attribut existant et spécifiez null pour le contenu, l’attribut est supprimé de son parent.

Exemple : Utiliser SetAttributeValue pour créer et gérer une liste de paires nom-valeur

L'exemple suivant crée un élément sans attribut. Il utilise ensuite la méthode SetAttributeValue pour créer et gérer une liste de paires nom-valeur.

// Create an element with no content.
XElement root = new XElement("Root");

// Add a number of name-value pairs as attributes.
root.SetAttributeValue("Top", 22);
root.SetAttributeValue("Left", 20);
root.SetAttributeValue("Bottom", 122);
root.SetAttributeValue("Right", 300);
root.SetAttributeValue("DefaultColor", "Color.Red");
Console.WriteLine(root);

// Replace the value of Top.
root.SetAttributeValue("Top", 10);
Console.WriteLine(root);

// Remove DefaultColor.
root.SetAttributeValue("DefaultColor", null);
Console.WriteLine(root);
' Create an element with no content.
Dim root As XElement = <Root/>

' Add a number of name-value pairs as attributes.
root.SetAttributeValue("Top", 22)
root.SetAttributeValue("Left", 20)
root.SetAttributeValue("Bottom", 122)
root.SetAttributeValue("Right", 300)
root.SetAttributeValue("DefaultColor", "Color.Red")
Console.WriteLine(root)

' Replace the value of Top.
root.SetAttributeValue("Top", 10)
Console.WriteLine(root)

' Remove DefaultColor.
root.SetAttributeValue("DefaultColor", Nothing)
Console.WriteLine(root)

Cet exemple produit la sortie suivante :

<Root Top="22" Left="20" Bottom="122" Right="300" DefaultColor="Color.Red" />
<Root Top="10" Left="20" Bottom="122" Right="300" DefaultColor="Color.Red" />
<Root Top="10" Left="20" Bottom="122" Right="300" />

Exemple : Utiliser SetElementValue pour créer et gérer une liste de paires nom-valeur

L'exemple suivant crée un élément sans élément enfant. Il utilise ensuite la méthode SetElementValue pour créer et gérer une liste de paires nom-valeur.

// Create an element with no content.
XElement root = new XElement("Root");

// Add a number of name-value pairs as elements.
root.SetElementValue("Top", 22);
root.SetElementValue("Left", 20);
root.SetElementValue("Bottom", 122);
root.SetElementValue("Right", 300);
root.SetElementValue("DefaultColor", "Color.Red");
Console.WriteLine(root);
Console.WriteLine("----");

// Replace the value of Top.
root.SetElementValue("Top", 10);
Console.WriteLine(root);
Console.WriteLine("----");

// Remove DefaultColor.
root.SetElementValue("DefaultColor", null);
Console.WriteLine(root);
' Create an element with no content.
Dim root As XElement = <Root/>

' Add a number of name-value pairs as elements.
root.SetElementValue("Top", 22)
root.SetElementValue("Left", 20)
root.SetElementValue("Bottom", 122)
root.SetElementValue("Right", 300)
root.SetElementValue("DefaultColor", "Color.Red")
Console.WriteLine(root)
Console.WriteLine("----")

' Replace the value of Top.
root.SetElementValue("Top", 10)
Console.WriteLine(root)
Console.WriteLine("----")

' Remove DefaultColor.
root.SetElementValue("DefaultColor", Nothing)
Console.WriteLine(root)

Cet exemple produit la sortie suivante :

<Root>
  <Top>22</Top>
  <Left>20</Left>
  <Bottom>122</Bottom>
  <Right>300</Right>
  <DefaultColor>Color.Red</DefaultColor>
</Root>
----
<Root>
  <Top>10</Top>
  <Left>20</Left>
  <Bottom>122</Bottom>
  <Right>300</Right>
  <DefaultColor>Color.Red</DefaultColor>
</Root>
----
<Root>
  <Top>10</Top>
  <Left>20</Left>
  <Bottom>122</Bottom>
  <Right>300</Right>
</Root>

Voir aussi