Back to top

C#에서 Xml 다루기

작성날짜 2025/01/02

article_img_0_rte_image_31.png

xml 로고, 귀여운 것 같다


XDocument


c#에서는 XDocument 클래스를 통해 xml 문서를 다루며 XDocument 클래스 하위에 XElement 노드를 추가하여 계층 구조를 표현합니다.

XDocument srcTree = new XDocument(
    new XComment("This is a comment"),
    new XElement("Root",
        new XElement("Child1", "data1"),
        new XElement("Child2", "data2"),
        new XElement("Child3", "data3"),
        new XElement("Child2", "data4"),
        new XElement("Info5", "info5"),
        new XElement("Info6", "info6"),
        new XElement("Info7", "info7"),
        new XElement("Info8", "info8")
    )
);

위와 같은 코드를 실행하여 파일로 저장하면

<?xml version="1.0" encoding="utf-8"?>
<!--This is a comment-->
<Root>
  <Child1>data1</Child1>
  <Child2>data2</Child2>
  <Child3>data3</Child3>
  <Child2>data4</Child2>
  <Info5>info5</Info5>
  <Info6>info6</Info6>
  <Info7>info7</Info7>
  <Info8>info8</Info8>
</Root>

이런 내용의 xml 파일이 됩니다.

 

위 코드와 결과를 살펴보면

  • XDocument는 XML 파일
  • XComment는 주석
  • XElement는 요소

각각 이렇게 표현된다는 것을 알 수 있습니다.



XML Serializer


Deserialize, Xml 문자열을 객체로 변환

straem 등으로 읽어 온 xml 문자열을 바로 c# 객체로 변환할 수도 있습니다. 아래 코드는 xml 문자열을 User의 ObservableCollection으로 변환하는 것을 보여줍니다.

string UserXamlString = @"<ArrayOfUser xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
<User>
    <Name>GilDong</Name>
    <Age>30</Age>
</User>
<User>
    <Name>YoungHui</Name>
    <Age>20</Age>​
</User>
<User>
    <Name>JiSu</Name>
    <Age>10</Age>​
</User>
</ArrayOfUser>​
​";


XmlSerializer xs = new XmlSerializer(typeof(ObservableCollection<User>));
using (var reader = new StringReader(UserXamlString))
{
    return (ObservableCollection<User>)xs.Deserialize(reader);
}


Serialize, 객체를 Xml 문자열로 변환

반대로 객체를 xml 문자열로 변환할 수도 있습니다.

XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection<User>));
using (var stringWriter = new StringWriter())
{
    serializer.Serialize(stringWriter, value);
    return stringWriter.ToString();
}


참고: XDocument 클래스

관련글

확장 메소드OPC Client 예제 (Softing Opc Ua Client)
C#에서 Xml 다루기
An unhandled error has occurred. Reload 🗙