Visual C#을 사용하여 개체를 XML로 직렬화

이 문서에서는 Visual C#을 사용하여 개체를 XML(Extensible Markup Language)으로 직렬화하는 방법에 대한 메서드를 제공합니다.

원래 제품 버전: Visual Studio
원래 KB 번호: 815813

요약

이 문서에 설명된 메서드는 개체의 상태를 유지하는 데 유용합니다. 메서드는 XML을 새 개체로 다시 직렬화 해제하여 개체를 복제하는 데에도 유용합니다.

이 문서에서는 다음 Microsoft .NET Framework 클래스 라이브러리 네임스페이스를 참조합니다.

  • System.Xml
  • System.Xml.Serialization

요구 사항

이 문서에서는 다음 topics 잘 알고 있다고 가정합니다.

  • Visual Studio
  • XML에 대한 일반적인 숙지
  • Visual C에 대한 일반적인 친숙함#

XML serialization

Serialization은 개체의 상태를 가져와서 어떤 방식으로도 유지하는 프로세스입니다. .NET Framework 모든 개체를 XML로 직렬화할 수 있는 강력한 개체를 포함합니다. 네임스페이 System.Xml.Serialization 스는 이 기능을 제공합니다.

다음 단계에 따라 개체를 만든 다음 상태를 XML로 직렬화하는 콘솔 애플리케이션을 만듭니다.

  1. Visual C#에서 새 콘솔 애플리케이션 프로젝트를 만듭니다.

  2. 프로젝트 메뉴에서 클래스 추가를 선택하여 프로젝트에 새 클래스를 추가합니다.

  3. 새 항목 추가 대화 상자에서 클래스의 이름을 clsPerson으로 변경합니다.

  4. 추가를 선택합니다. 새 클래스가 만들어집니다.

  5. public 클래스 clsPerson 문 다음에 다음 코드를 추가합니다.

    public string FirstName;
    public string MI;
    public string LastName;
    
  6. Visual Studio에서 Program.cs 코드 창으로 전환합니다.

  7. 메서드에서 void Main 클래스의 instance 선언하고 만듭니다clsPerson.

    clsPerson p = new clsPerson();
    
  8. 개체의 속성을 설정합니다.clsPerson

    p.FirstName = "Jeff";
    p.MI = "A";
    p.LastName = "Price";
    
  9. 네임스페이스에는 Xml.Serialization 개체를 XML로 XmlSerializer 직렬화하는 클래스가 포함되어 있습니다. 의 XmlSerializerinstance 만들 때 해당 생성자로 serialize하려는 클래스의 형식을 전달합니다.

    System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
    
  10. 메서드는 Serialize 개체를 XML로 직렬화하는 데 사용됩니다. serialize는 오버로드되고 출력을 , Stream또는 XMLWriter 개체로 TextWriter보낼 수 있습니다. 이 예제에서는 콘솔에 출력을 보냅니다.

    x.Serialize(Console.Out,p);
    Console.WriteLine();
    Console.ReadLine();
    

전체 코드 목록

using System;

public class clsPerson
{
    public  string FirstName;
    public  string MI;
    public  string LastName;
}

class class1
{
    static void Main(string[] args)
    {
        clsPerson p=new clsPerson();
        p.FirstName = "Jeff";
        p.MI = "A";
        p.LastName = "Price";
        System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
        x.Serialize(Console.Out, p);
        Console.WriteLine();
        Console.ReadLine();
    }
}

확인

프로젝트가 작동하는지 확인하려면 Ctrl+F5를 눌러 프로젝트를 실행합니다. clsPerson 개체가 만들어지고 입력한 값으로 채워집니다. 이 상태는 XML로 직렬화됩니다. 콘솔 창에는 다음 코드가 표시됩니다.

<?xml version="1.0" encoding="IBM437"?>
<clsPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <FirstName>Jeff</FirstName>
    <MI>A</MI>
    <LastName>Price</LastName>
</clsPerson>

문제 해결

개체는 Xml.Serialization.XmlSerializer 단순 serialization만 수행합니다. 개체 또는 자식 개체의 프라이빗 변수도 직렬화하려면 심층 직렬화를 사용해야 합니다.