XmlObjectSerializer 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
개체를 XML 스트림 또는 문서로 serialize하는 데 사용되는 기본 클래스를 제공합니다. 이 클래스는 추상 클래스입니다.
public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
- 상속
-
XmlObjectSerializer
- 파생
예제
다음 예제에서는 라는 WriteObjectWithInstance
메서드를 매개 변수로 포함 XmlObjectSerializer 합니다. 합니다 메서드를 사용 하 여 개체를 직렬화 합니다 DataContractSerializer 또는 NetDataContractSerializer 호출 하 WriteObject 여 메서드.
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상속하는 경우 , , WriteObjectContent(XmlDictionaryWriter, Object)WriteEndObject(XmlDictionaryWriter)멤버WriteStartObject(XmlDictionaryWriter, Object)를 재정의해야 합니다. IsStartObject 또한 읽기 및 역직렬화를 위해 및 ReadObject 메서드를 구현해야 합니다.
생성자
XmlObjectSerializer() |
XmlObjectSerializer 클래스의 새 인스턴스를 초기화합니다. |
메서드
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
IsStartObject(XmlDictionaryReader) |
읽을 수 있는 XML 요소 위에 XmlDictionaryReader가 배치되는지 여부를 지정하는 값을 가져옵니다. |
IsStartObject(XmlReader) |
읽을 수 있는 XML 요소 위에 XmlReader가 배치되는지 여부를 지정하는 값을 가져옵니다. |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
ReadObject(Stream) |
Stream을 사용하여 XML 스트림 또는 문서를 읽고 역직렬화된 개체를 반환합니다. |
ReadObject(XmlDictionaryReader) |
XmlDictionaryReader를 사용하여 XML 문서 또는 스트림을 읽고 역직렬화된 개체를 반환합니다. |
ReadObject(XmlDictionaryReader, Boolean) |
XmlDictionaryReader를 사용하여 XML 스트림 또는 문서를 읽고 역직렬화된 개체를 반환합니다. 또한 직렬 변환기가 읽기를 시도하기 전에 데이터를 읽을 수 있는지 여부를 지정할 수 있습니다. |
ReadObject(XmlReader) |
XmlReader를 사용하여 XML 문서 또는 스트림을 읽고 역직렬화된 개체를 반환합니다. |
ReadObject(XmlReader, Boolean) |
XmlReader를 사용하여 XML 문서 또는 스트림을 읽고 역직렬화된 개체를 반환합니다. 또한 직렬 변환기가 읽기를 시도하기 전에 데이터를 읽을 수 있는지 여부를 지정할 수 있습니다. |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
WriteEndObject(XmlDictionaryWriter) |
XmlDictionaryWriter를 사용하여 XML 문서 또는 스트림에 개체 데이터의 끝을 닫기 XML 요소로 씁니다. |
WriteEndObject(XmlWriter) |
XmlWriter를 사용하여 XML 문서 또는 스트림에 개체 데이터의 끝을 닫기 XML 요소로 씁니다. |
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