다음을 통해 공유


방법: XML 파일에 개체 데이터 쓰기(C# 및 Visual Basic)

이 예제에서는 XmlSerializer 클래스를 사용하여 클래스의 개체를 XML 파일에 씁니다.

예제

이 코드 예제에서는 이름이 Book인 클래스를 정의하고, 해당 클래스의 인스턴스를 만든 다음, XML serialization을 사용하여 XML 파일에 인스턴스를 씁니다.

이와 유사한 코드는 IntelliSense 코드 조각으로 사용할 수 있습니다. 코드 조각 관리자에서 XML에 있습니다. 자세한 내용은 코드 조각을(를) 참조하십시오.

Public Module XMLWrite

    Sub Main()
        WriteXML()
    End Sub 

    Public Class Book
        Public Title As String 
    End Class 

    Public Sub WriteXML()
        Dim overview As New Book
        overview.Title = "Serialization Overview" 
        Dim writer As New System.Xml.Serialization.XmlSerializer(GetType(Book))
        Dim file As New System.IO.StreamWriter(
            "c:\temp\SerializationOverview.xml")
        writer.Serialize(file, overview)
        file.Close()
    End Sub 
End Module
public class XMLWrite
{

   static void Main(string[] args)
    {
        WriteXML();
    }


    public class Book
    {
        public String title; 
    }


    public static void WriteXML()
    {
        Book overview = new Book();
        overview.title = "Serialization Overview";
        System.Xml.Serialization.XmlSerializer writer = 
            new System.Xml.Serialization.XmlSerializer(typeof(Book));

        var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "//SerializationOverview.xml";
        System.IO.FileStream file = System.IO.File.Create(path);

        writer.Serialize(file, overview);
        file.Close();
    }
}

코드 컴파일

클래스에는 매개 변수가 없는 공용 생성자가 들어 있어야 합니다.

강력한 프로그래밍

다음 조건에서 예외가 발생할 수 있습니다.

  • serialize되는 클래스에 매개 변수 없는 공용 생성자가 들어 있지 않은 경우

  • 파일이 있는데 읽기 전용인 경우(IOException)

  • 경로가 너무 긴 경우(PathTooLongException)

  • 디스크가 꽉 찬 경우(IOException)

보안

이 예제에서는 파일이 없는 경우 새 파일을 만듭니다. 응용 프로그램에서 파일을 만들어야 하는 경우, 해당 응용 프로그램에는 폴더에 대한 Create 액세스 권한이 필요합니다. 해당 파일이 이미 있으면 응용 프로그램에는 더 낮은 수준의 권한인 Write 액세스 권한만 있으면 됩니다. 가능하면 배포하는 동안 파일을 만들고 폴더에 대한 Create 권한 대신 파일 하나에 대한 Read 권한만 부여하는 것이 안전합니다.

참고 항목

작업

방법: XML 파일에서 개체 데이터 읽기(C# 및 Visual Basic)

참조

StreamWriter

기타 리소스

Serialization(C# 및 Visual Basic)

Serialization(C# 및 Visual Basic)