Obsługa par nazwa-wartość (LINQ to XML)

Wiele aplikacji musi utrzymywać informacje, które najlepiej przechowywać jako pary nazwa-wartość. Te informacje mogą być informacjami o konfiguracji lub ustawieniami globalnymi. LINQ to XML zawiera metody, które ułatwiają konserwację zestawu par nazwa-wartość. Informacje można przechowywać jako atrybuty lub jako zestaw elementów podrzędnych.

Jedną z różnic między przechowywaniem informacji jako atrybutami lub elementami podrzędnymi jest to, że atrybuty mają ograniczenie, że może istnieć tylko jeden atrybut o określonej nazwie elementu. To ograniczenie nie dotyczy elementów podrzędnych.

SetAttributeValue i SetElementValue

Dwie metody, które ułatwiają utrzymywanie par name-value, to SetAttributeValue i SetElementValue. Te dwie metody mają podobną semantyka.

SetAttributeValue może dodawać, modyfikować i usuwać atrybuty elementu.

  • Jeśli wywołasz SetAttributeValue metodę o nazwie atrybutu, który nie istnieje, metoda tworzy nowy atrybut i dodaje go do określonego elementu.
  • Jeśli wywołasz SetAttributeValue metodę o nazwie istniejącego atrybutu i określonej zawartości, zawartość atrybutu zostanie zastąpiona określoną zawartością.
  • Jeśli wywołasz SetAttributeValue metodę o nazwie istniejącego atrybutu i określisz null jego zawartość, atrybut zostanie usunięty z elementu nadrzędnego.

SetElementValue może dodawać, modyfikować i usuwać elementy podrzędne elementu.

  • Jeśli wywołasz SetElementValue metodę o nazwie elementu podrzędnego, który nie istnieje, metoda tworzy nowy element i dodaje go do określonego elementu.
  • Jeśli wywołasz SetElementValue metodę o nazwie istniejącego elementu i określonej zawartości, zawartość elementu zostanie zastąpiona określoną zawartością.
  • Jeśli wywołasz SetElementValue metodę o nazwie istniejącego elementu i określisz null zawartość, element zostanie usunięty z elementu nadrzędnego.

Przykład: użyj polecenia SetAttributeValue , aby utworzyć i zachować listę par name-value

Poniższy przykład tworzy element bez atrybutów. Następnie używa SetAttributeValue metody , aby utworzyć i zachować listę par name-value.

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

Ten przykład generuje następujące wyniki:

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

Przykład: użyj polecenia SetElementValue , aby utworzyć i zachować listę par name-value

Poniższy przykład tworzy element bez elementów podrzędnych. Następnie używa SetElementValue metody , aby utworzyć i zachować listę par name-value.

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

Ten przykład generuje następujące wyniki:

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

Zobacz też