Поделиться через


Поддержание пар «имя-значение»

Обновлен: November 2007

Множеству приложений приходится сохранять данные, которые лучше всего хранить в виде пар «имя-значение». Эти данные могут быть сведениями по конфигурации или глобальными настройками. LINQ to XML содержит несколько методов, которые облегчают хранение в виде множества пар «имя-значение». Можно либо оставить информацию в виде атрибутов, либо в виде набора дочерних элементов.

Одно из отличий между хранением информации в виде атрибутов и в виде дочерних элементов состоит в том, что атрибуты имеют ограничение в том, что для элемента может быть только один атрибут с данным именем. Это ограничение не относится к дочерним элементам.

Методы SetAttributeValue и SetElementValue

Два метода SetAttributeValue и SetElementValue облегчают хранение в виде пар «имя-значение». Эти два метода имеют похожую семантику.

С помощью метода SetAttributeValue можно добавлять, изменять и удалять атрибуты данного элемента.

  • При вызове метода SetAttributeValue с несуществующим именем атрибута этот метод создаст новый атрибут и добавит его в указанный элемент.

  • При вызове метода SetAttributeValue с существующим именем атрибута и с указанным содержимым содержимое данного атрибута замещается указанным содержимым.

  • При вызове метода SetAttributeValue с существующим именем атрибута и с указанием значения NULL в качестве содержимого атрибут удаляется из своего родителя.

С помощью метода SetElementValue можно добавлять, изменять и удалять дочерние элементы данного элемента.

  • Если вызван метод SetElementValue с несуществующим именем дочернего элемента, то этот метод создаст новый элемент и добавит его к указанному элементу.

  • При вызове метода SetElementValue с существующим именем элемента и с указанным содержимым содержимое данного элемента замещается указанным содержимым.

  • При вызове метода SetElementValue с существующим именем атрибута и с указанием значения NULL в качестве содержимого атрибут удаляется из своего родителя.

Пример

Следующий пример показывает, как создать элемент без атрибутов. Затем используется метод SetAttributeValue для создания и поддержания списка пар «имя-значение».

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

Этот пример выводит следующие данные:

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

Пример

Следующий пример показывает, как создать элемент без дочерних элементов. Затем используется метод SetElementValue для создания и поддержания списка пар «имя-значение».

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

Этот пример выводит следующие данные:

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

См. также

Ссылки

SetAttributeValue

SetElementValue

Другие ресурсы

Изменение XML-деревьев (LINQ to XML)