Údržba párů název-hodnota (LINQ to XML)

Mnoho aplikací musí udržovat informace, které jsou nejlépe zachovány jako páry název-hodnota. Tyto informace můžou být informace o konfiguraci nebo globální nastavení. LINQ to XML obsahuje metody, které usnadňují údržbu sady párů název-hodnota. Informace můžete ponechat buď jako atributy, nebo jako sadu podřízených prvků.

Jedním z rozdílů mezi zachováním informací jako atributů nebo podřízených prvků je, že atributy mají omezení, že může existovat pouze jeden atribut s konkrétním názvem prvku. Toto omezení neplatí pro podřízené prvky.

SetAttributeValue a SetElementValue

Dvě metody, které usnadňují zachování párů název-hodnota jsou SetAttributeValue a SetElementValue. Tyto dvě metody mají podobnou sémantiku.

SetAttributeValue může přidávat, upravovat a odebírat atributy elementu.

  • Pokud voláte SetAttributeValue s názvem atributu, který neexistuje, metoda vytvoří nový atribut a přidá ho do zadaného elementu.
  • Pokud voláte SetAttributeValue s názvem existujícího atributu a s určitým obsahem, obsah atributu se nahradí zadaným obsahem.
  • Pokud voláte SetAttributeValue s názvem existujícího atributu a zadáte null pro obsah, atribut se odebere z nadřazeného objektu.

SetElementValue může přidávat, upravovat a odebírat podřízené prvky elementu.

  • Pokud voláte SetElementValue s názvem podřízeného elementu, který neexistuje, metoda vytvoří nový prvek a přidá ho do zadaného elementu.
  • Pokud voláte SetElementValue s názvem existujícího prvku a s určitým obsahem, obsah prvku se nahradí zadaným obsahem.
  • Pokud voláte SetElementValue s názvem existujícího elementu a určíte null pro obsah, prvek se odebere z nadřazeného objektu.

Příklad: Slouží SetAttributeValue k vytvoření a údržbě seznamu párů name-value.

Následující příklad vytvoří prvek bez atributů. Pak použije metodu SetAttributeValue k vytvoření a údržbě seznamu párů název-hodnota.

// 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)

Tento příklad vytvoří následující výstup:

<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" />

Příklad: Slouží SetElementValue k vytvoření a údržbě seznamu párů name-value.

Následující příklad vytvoří prvek bez podřízených elementů. Pak použije metodu SetElementValue k vytvoření a údržbě seznamu párů název-hodnota.

// 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)

Tento příklad vytvoří následující výstup:

<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>

Viz také