維持成對的名稱和數值 (LINQ to XML)

許多應用程式都必須維持妥善保存資訊為成對的名稱和數值。 這類資訊可能是組態或全域設定的相關資訊。 LINQ to XML 包含可讓您輕鬆地維持一組成對的名稱和數值的方法。 您可以將該資訊保存為屬性或一組子項目。

將資訊保存為屬性或子項目的其中一個差異在於,屬性所擁有的條件約束中,僅能有一個具有項目之特定名稱的屬性。 這項限制不適用於子項目。

SetAttributeValue 和 SetElementValue

可簡化保存成對的名稱和數值所用的兩個方法為SetAttributeValueSetElementValue。 這些兩個方法具有類似的語意 (Semantics)。

SetAttributeValue可以加入、修改和移除元素的屬性。

  • 如果您呼叫的SetAttributeValue具有不存在的屬性所用的名稱,此方法會建立一個新的屬性,並將其加入至指定元素之中。
  • 如果您呼叫的 SetAttributeValue 具有現有屬性的名稱以及某些指定的內容,屬性的內容會取代為指定的內容。
  • 如果您呼叫具有現有屬性名稱所用的SetAttributeValue,並為內容指定null,該屬性會從其父代移除。

SetElementValue可以加入、修改和移除元素的子項目。

  • 如果您呼叫的SetElementValue具有不存在子項目所用的名稱,此方法會建立一個新元素,並將其加入至指定元素之中。
  • 如果您呼叫的 SetElementValue 具有現有項目的名稱以及某些指定的內容,項目的內容會取代為指定的內容。
  • 如果您呼叫具有現有元素名稱所用的SetElementValue,並為內容指定null,該元素會從其父代移除。

範例:SetAttributeValue用來建立和維持成對的名稱和數值的清單

下列範例會建立沒有屬性的項目。 接著,這會使用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用來建立和維持成對的名稱和數值的清單

下列範例會建立沒有子項目的項目。 接著,這會使用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>

另請參閱