LINQ to XML을 사용하여 사전 작업을 수행하는 방법
다양한 종류의 데이터 구조를 XML로 변환한 다음 XML에서 다른 데이터 구조로 변환하는 것이 편리한 경우가 많습니다. 이 문서에서는 Dictionary<TKey,TValue>를 XML로 변환하는 방법과 그 반대로 변환하는 방법을 보여 줍니다.
예: 사전을 만들고 해당 콘텐츠를 XML로 변환
이 첫 번째 예는 Dictionary<TKey,TValue>를 만든 다음 이를 XML로 변환합니다.
이 예의 C# 버전에서는 쿼리가 새 XElement 개체를 프로젝션하고 생성되는 컬렉션이 루트 XElement 개체의 생성자에 인수로 전달되는 함수 생성의 형태를 사용합니다.
Visual Basic 버전은 XML 리터럴과 포함된 식의 쿼리를 사용합니다. 쿼리는 새 XElement 개체를 프로젝션하고 이 개체는 Root
XElement 개체의 새 내용이 됩니다.
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("Child1", "Value1");
dict.Add("Child2", "Value2");
dict.Add("Child3", "Value3");
dict.Add("Child4", "Value4");
XElement root = new XElement("Root",
from keyValue in dict
select new XElement(keyValue.Key, keyValue.Value)
);
Console.WriteLine(root);
Dim dict As Dictionary(Of String, String) = New Dictionary(Of String, String)()
dict.Add("Child1", "Value1")
dict.Add("Child2", "Value2")
dict.Add("Child3", "Value3")
dict.Add("Child4", "Value4")
Dim root As XElement = _
<Root>
<%= From keyValue In dict _
Select New XElement(keyValue.Key, keyValue.Value) %>
</Root>
Console.WriteLine(root)
이 예제는 다음과 같은 출력을 생성합니다.
<Root>
<Child1>Value1</Child1>
<Child2>Value2</Child2>
<Child3>Value3</Child3>
<Child4>Value4</Child4>
</Root>
예: 사전을 만들고 XML 데이터에서 로드
다음 예에서는 XML 데이터에서 로드하는 사전을 만듭니다.
XElement root = new XElement("Root",
new XElement("Child1", "Value1"),
new XElement("Child2", "Value2"),
new XElement("Child3", "Value3"),
new XElement("Child4", "Value4")
);
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (XElement el in root.Elements())
dict.Add(el.Name.LocalName, el.Value);
foreach (string str in dict.Keys)
Console.WriteLine("{0}:{1}", str, dict[str]);
Dim root As XElement = _
<Root>
<Child1>Value1</Child1>
<Child2>Value2</Child2>
<Child3>Value3</Child3>
<Child4>Value4</Child4>
</Root>
Dim dict As Dictionary(Of String, String) = New Dictionary(Of String, String)
For Each el As XElement In root.Elements
dict.Add(el.Name.LocalName, el.Value)
Next
For Each str As String In dict.Keys
Console.WriteLine("{0}:{1}", str, dict(str))
Next
이 예제는 다음과 같은 출력을 생성합니다.
Child1:Value1
Child2:Value2
Child3:Value3
Child4:Value4
참고 항목
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET