다음을 통해 공유


이름-값 쌍 유지(LINQ to XML)

대부분의 애플리케이션은 이름-값 쌍으로 가장 잘 유지되는 정보를 유지 관리해야 합니다. 이 정보는 구성 정보이거나 전역 설정일 수 있습니다. LINQ to XML에는 이름-값 쌍 집합을 쉽게 유지 관리할 수 있는 메서드가 포함되어 있습니다. 정보를 특성이나 자식 요소의 집합으로 유지할 수 있습니다.

정보를 특성으로 유지하는 경우와 자식 요소로 유지하는 경우의 차이점은 특성에 제약 조건이 있다는 것입니다. 즉, 한 요소에 특정 이름을 가진 특성이 하나만 있을 수 있습니다. 이 제한 사항은 자식 요소에는 적용되지 않습니다.

SetAttributeValue 및 SetElementValue

이름/값 쌍 유지를 용이하게 하는 두 메서드는 SetAttributeValueSetElementValue입니다. 이러한 두 메서드의 의미는 유사합니다.

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>

참고 항목