XmlObjectSerializer 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
개체를 XML 스트림 또는 문서로 직렬화하는 데 사용되는 기본 클래스를 제공합니다. 이 클래스는 추상입니다.
public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
- 상속
-
XmlObjectSerializer
- 파생
예제
다음 예제에서는 매개 변수로 XmlObjectSerializer 포함하는 WriteObjectWithInstance
메서드를 보여 있습니다. 이 메서드는 WriteObject 메서드를 호출하여 DataContractSerializer 또는 NetDataContractSerializer 사용하여 개체를 serialize합니다.
public class Test
{
private void WriteObjectWithInstance(XmlObjectSerializer xm, Company graph,
string fileName)
{
// Use either the XmlDataContractSerializer or NetDataContractSerializer,
// or any other class that inherits from XmlObjectSerializer to write with.
Console.WriteLine(xm.GetType());
FileStream fs = new FileStream(fileName, FileMode.Create);
XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(fs);
xm.WriteObject(writer, graph);
Console.WriteLine("Done writing {0}", fileName);
}
private void Run()
{
// Create the object to write to a file.
Company graph = new Company();
graph.Name = "cohowinery.com";
// Create a DataContractSerializer and a NetDataContractSerializer.
// Pass either one to the WriteObjectWithInstance method.
DataContractSerializer dcs = new DataContractSerializer(typeof(Company));
NetDataContractSerializer ndcs = new NetDataContractSerializer();
WriteObjectWithInstance(dcs, graph, @"datacontract.xml");
WriteObjectWithInstance(ndcs, graph, @"netDatacontract.xml");
}
[DataContract]
public class Company
{
[DataMember]
public string Name;
}
static void Main()
{
try
{
Console.WriteLine("Starting");
Test t = new Test();
t.Run();
Console.WriteLine("Done");
Console.ReadLine();
}
catch (InvalidDataContractException iExc)
{
Console.WriteLine("You have an invalid data contract: ");
Console.WriteLine(iExc.Message);
Console.ReadLine();
}
catch (SerializationException serExc)
{
Console.WriteLine("There is a problem with the instance:");
Console.WriteLine(serExc.Message);
Console.ReadLine();
}
catch (QuotaExceededException qExc)
{
Console.WriteLine("The quota has been exceeded");
Console.WriteLine(qExc.Message);
Console.ReadLine();
}
catch (Exception exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine(exc.ToString());
Console.ReadLine();
}
}
Public Class Test
Private Sub WriteObjectWithInstance(ByVal xm As XmlObjectSerializer, _
ByVal graph As Company, ByVal fileName As String)
' Use either the XmlDataContractSerializer or NetDataContractSerializer,
' or any other class that inherits from XmlObjectSerializer to write with.
Console.WriteLine(xm.GetType())
Dim fs As New FileStream(fileName, FileMode.Create)
Dim writer As XmlDictionaryWriter = XmlDictionaryWriter.CreateTextWriter(fs)
xm.WriteObject(writer, graph)
Console.WriteLine("Done writing {0}", fileName)
End Sub
Private Sub Run()
' Create the object to write to a file.
Dim graph As New Company()
graph.Name = "cohowinery.com"
' Create a DataContractSerializer and a NetDataContractSerializer.
' Pass either one to the WriteObjectWithInstance method.
Dim dcs As New DataContractSerializer(GetType(Company))
Dim ndcs As New NetDataContractSerializer()
WriteObjectWithInstance(dcs, graph, "datacontract.xml")
WriteObjectWithInstance(ndcs, graph, "netDatacontract.xml")
End Sub
<DataContract()> _
Public Class Company
<DataMember()> _
Public Name As String
End Class
Shared Sub Main()
Try
Console.WriteLine("Starting")
Dim t As New Test()
t.Run()
Console.WriteLine("Done")
Console.ReadLine()
Catch iExc As InvalidDataContractException
Console.WriteLine("You have an invalid data contract: ")
Console.WriteLine(iExc.Message)
Console.ReadLine()
Catch serExc As SerializationException
Console.WriteLine("There is a problem with the instance:")
Console.WriteLine(serExc.Message)
Console.ReadLine()
Catch qExc As QuotaExceededException
Console.WriteLine("The quota has been exceeded")
Console.WriteLine(qExc.Message)
Console.ReadLine()
Catch exc As Exception
Console.WriteLine(exc.Message)
Console.WriteLine(exc.ToString())
Console.ReadLine()
End Try
End Sub
End Class
설명
XmlObjectSerializer 확장하여 개체를 직렬화하고 역직렬화하는 고유한 직렬 변환기를 만듭니다. DataContractSerializer 클래스와 NetDataContractSerializer 클래스는 모두 XmlObjectSerializer 상속되며 데이터 계약 규칙(DataContractAttribute 및 DataMemberAttribute사용하여 만든 개체)을 준수하는 개체를 직렬화하고 역직렬화하는 데 사용됩니다.
구현자 참고
XmlObjectSerializer상속하는 경우 WriteStartObject(XmlDictionaryWriter, Object), WriteObjectContent(XmlDictionaryWriter, Object), WriteEndObject(XmlDictionaryWriter)멤버를 재정의해야 합니다. 또한 읽기 및 역직렬화를 위해 IsStartObject 및 ReadObject 메서드를 구현해야 합니다.
생성자
XmlObjectSerializer() |
XmlObjectSerializer 클래스의 새 인스턴스를 초기화합니다. |
메서드
Equals(Object) |
지정된 개체가 현재 개체와 같은지 여부를 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 사용됩니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type 가져옵니다. (다음에서 상속됨 Object) |
IsStartObject(XmlDictionaryReader) |
XmlDictionaryReader 읽을 수 있는 XML 요소 위에 배치되는지 여부를 지정하는 값을 가져옵니다. |
IsStartObject(XmlReader) |
XmlReader 읽을 수 있는 XML 요소 위에 배치되는지 여부를 지정하는 값을 가져옵니다. |
MemberwiseClone() |
현재 Object단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
ReadObject(Stream) |
Stream 사용하여 XML 스트림 또는 문서를 읽고 역직렬화된 개체를 반환합니다. |
ReadObject(XmlDictionaryReader, Boolean) |
XmlDictionaryReader XML 스트림 또는 문서를 읽고 역직렬화된 개체를 반환합니다. 또한 serializer에서 데이터를 읽기 전에 읽을 수 있는지 여부를 지정할 수 있습니다. |
ReadObject(XmlDictionaryReader) |
XmlDictionaryReader 사용하여 XML 문서 또는 스트림을 읽고 역직렬화된 개체를 반환합니다. |
ReadObject(XmlReader, Boolean) |
XmlReader 사용하여 XML 문서 또는 스트림을 읽고 역직렬화된 개체를 반환합니다. 또한 serializer에서 데이터를 읽기 전에 읽을 수 있는지 여부를 지정할 수 있습니다. |
ReadObject(XmlReader) |
XmlReader 사용하여 XML 문서 또는 스트림을 읽고 역직렬화된 개체를 반환합니다. |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
WriteEndObject(XmlDictionaryWriter) |
개체 데이터의 끝을 닫는 XML 요소로 XML 문서 또는 스트림에 XmlDictionaryWriter씁니다. |
WriteEndObject(XmlWriter) |
개체 데이터의 끝을 닫는 XML 요소로 XML 문서 또는 스트림에 XmlWriter씁니다. |
WriteObject(Stream, Object) |
지정된 Stream사용하여 개체의 전체 콘텐츠(시작, 콘텐츠 및 끝)를 XML 문서 또는 스트림에 씁니다. |
WriteObject(XmlDictionaryWriter, Object) |
지정된 XmlDictionaryWriter사용하여 개체의 전체 콘텐츠(시작, 콘텐츠 및 끝)를 XML 문서 또는 스트림에 씁니다. |
WriteObject(XmlWriter, Object) |
지정된 XmlWriter사용하여 개체의 전체 콘텐츠(시작, 콘텐츠 및 끝)를 XML 문서 또는 스트림에 씁니다. |
WriteObjectContent(XmlDictionaryWriter, Object) |
지정된 XmlDictionaryWriter사용하여 개체의 내용만 XML 문서 또는 스트림에 씁니다. |
WriteObjectContent(XmlWriter, Object) |
지정된 XmlWriter사용하여 개체의 내용만 XML 문서 또는 스트림에 씁니다. |
WriteStartObject(XmlDictionaryWriter, Object) |
지정된 XmlDictionaryWriter사용하여 개체 데이터의 시작을 여는 XML 요소로 씁니다. |
WriteStartObject(XmlWriter, Object) |
지정된 XmlWriter사용하여 개체 데이터의 시작을 여는 XML 요소로 씁니다. |
적용 대상
추가 정보
.NET