XML serializer 를 이용 하여 대상 을 XML 로 직렬 화 합 니 다.

마이크로 소프트 는 직렬 화 데이터 의 중요성 을 인 식 했 기 때문에.NET 프레임 워 크 에 네 임 스페이스 System.Runtime.Serialization 과 System.Xml.Serialization 을 포함 하여 직렬 화 기능 을 제공 하여 사용자 가 직접 직렬 화 방법 을 작성 하 는 데 프레임 워 크 를 제공 합 니 다.System.Xml.Serialization 네 임 스페이스 는 대상 을 XML 형식 으로 직렬 화 하 는 기본 적 인 방법 을 제공 합 니 다.다음은 이런 방법 을 어떻게 사용 하 는 지 살 펴 보 자.XML 의 매력    직렬 화 XML 은 저장 이나 전송 을 편리 하 게 하기 위해 한 대상 의 공공 도 메 인 과 속성 을 직렬 형식(여 기 는 XML 형식)으로 저장 하 는 과정 을 말한다.비 직렬 화 는 직렬 상태 정 보 를 사용 하여 대상 을 직렬 XML 상태 에서 원시 상태 로 복원 하 는 과정 이다.따라서 직렬 화 는 대상 의 상 태 를 흐름 이나 버퍼 에 저장 하 는 방법 으로 볼 수 있다.직렬 화의 목적 은 데이터 저장 과 데이터 변환 이다.데이터 저장 은 사용자 세 션 에 데 이 터 를 저장 하 는 것 을 말한다.프로그램 이 닫 혔 을 때 데 이 터 는 저장 되 고 사용자 가 돌 아 왔 을 때 데 이 터 는 다시 불 러 옵 니 다(직렬 화 되 지 않 음).데이터 변환 이란 데 이 터 를 다른 시스템 에 의 해 식 별 될 수 있 는 형식 으로 바 꾸 는 것 을 말한다.직렬 화 와 XML 을 사용 하여 데이터 변환 을 편리 하 게 할 수 있 습 니 다.    대상 의 데 이 터 는 클래스,방법,속성,개인 유형,배열 일 수 있 습 니 다.System.Xml.XmlElement 또는 System.Xml.XmlAttribute 대상 에 내장 되 어 있 는 XML 일 수도 있 습 니 다.    System.Xml.Serialization 네 임 스페이스 의 관건 적 인 종 류 는 XmlSerializer 입 니 다.물론 이 네 임 스페이스 에는 XML 의 다른 측면 과 SOAP 와 관련 된 다른 유형 도 포함 되 어 있 지만 우리 의 중점 은 XmlSerializer 류 입 니 다.XmlSerializer    XmlSerializer 클래스 는 대상 을 XML 파일 로 직렬 화하 고 XML 문 서 를 대상 으로 비 직렬 화 하 는 방법 을 제공 합 니 다.그것 은 또한 사용자 가 지정 한 대상 을 어떻게 XML 로 바 꿀 수 있 습 니까?직렬 화 된 대상 의 유형 을 클래스 구조 함수 의 매개 변수 로 할 수 있 습 니 다.아래 의 C\#코드 는 구조 함수 의 용법 을 설명 한다.    XmlSerializer ser = new XmlSerializer(typeof(objectToSerialize));     다음은 등가 의 VB.NET 코드 입 니 다.    Dim ser As New XmlSerializer(GetType(objectToSerialize))     실제 직렬 화 과정 은 XmlSerializer 류 의 Serialize 방법 에서 이 루어 집 니 다.이 방법 은 직렬 화 과정 에서 TextWriter,Stream,XmlWriter 대상 을 호출 할 수 있 습 니 다.아래 의 예 코드 는 이 방법 을 어떻게 호출 하 는 지 설명 한다.이 예 에서 대상 이 로 컬 디스크 의 파일 에 직렬 화 되 어 저 장 됩 니 다.예 에서 먼저 클래스 성명 이 고 그 다음은 직렬 화 소스 코드 이다.using System;namespace BuilderSerialization {public class Address {public Address() {}public string Address1;public string Address2;public string City;public string State;public string Zip;public string Country;} }using System;namespace BuilderSerialization {public class Author {public Author() { }public string FirstName;public string MiddleName;public string LastName;public string Title;public string Gender;public Address AddressObject;} }namespace BuilderSerialization {public class Book {public Book() { }public string Title;public Author AuthorObject;public string ISBN;public double RetailPrice;public string Publisher;}}using System;using System.Xml.Serialization;using System.IO;namespace BuilderSerialization {class TestClass {static void Main(string[] args) {Book BookObject = new Book();XmlSerializer ser = new XmlSerializer(typeof(Book));TextWriter writer = new StreamWriter("booktest.xml");BookObject.Title = "Practical LotusScript";BookObject.ISBN = "1884777767 ";BookObject.Publisher = "Manning Publications";BookObject.RetailPrice = 43.95;BookObject.AuthorObject = new Author();BookObject.AuthorObject.FirstName = "Tony";BookObject.AuthorObject.LastName = "Patton";BookObject.AuthorObject.Gender = "Male";BookObject.AuthorObject.AddressObject = new Address();BookObject.AuthorObject.AddressObject.Address1 = "1 Main Street";BookObject.AuthorObject.AddressObject.City = "Anywhere";BookObject.AuthorObject.AddressObject.State = "KY";BookObject.AuthorObject.AddressObject.Zip = "40000";BookObject.AuthorObject.AddressObject.Country = "USA";ser.Serialize(writer, BookObject);writer.Close();} } } 위의 코드 는 세 개의 대상 을 하나의 대상 으로 바 꾸 었 기 때문에 직렬 화 과정 에서 XML 파일 이 생 성 되 었 다.다음은 예제 프로그램 에서 만 든 XML 문서 입 니 다.Practical LotusScriptTonyPattonMale1 Main StreetAnywhereKY40000USA188477776743.95Manning Publications직렬 화 과정 에서 도 대상 데이터 의 끼 워 넣 기 를 처리 할 수 있 습 니 다.데 이 터 는 식별 가능 한 형식 으로 변환 되 어 데이터 리 셋(비 직렬 화)과 다른 시스템 으로 의 데이터 전송 을 편리 하 게 한다.데이터 전송 과정 에서 수신 자 시스템 은 XML 파일 의 형식 을 알 아야 합 니 다(미리 몰 랐 다 면).따라서 XML schema 파일 을 제공 해 야 합 니 다.NET 프레임 워 크 의 XSD.exe 도 구 는 직렬 화 XML 에 schema 파일 을 생 성 할 수 있 습 니 다.다음은 VB.NET 로 작 성 된 예 코드 입 니 다.Public Class Address Public Address 1 As StringPublic Address 2 As StringPublic City As StringPublic State As StringPublic Zip As StringPublic Country As StringEnd ClassPublic Class Author Public FirstName As StringPublic MiddleName As StringPublic LastName As StringPublic Title As StringPublic Gender As StringPublic AddressObject As AddressEnd ClassPublic Class BookPublic AuthorObject As AuthorPublic Title As StringPublic ISBN As StringPublic RetailPrice As DoublePublic Publisher As StringEnd ClassImports System.Xml.SerializationImports System.IOModule Module1Sub Main()Dim BookObject As New BookDim ser As New XmlSerializer(GetType(Book))Dim writer As New StreamWriter("booktest.xml")With BookObject.Title = "Practical LotusScript".ISBN = "1884777767 ".Publisher = "Manning Publications".RetailPrice = 43.95.AuthorObject = New Author.AuthorObject.FirstName = "Tony".AuthorObject.LastName = "Patton".AuthorObject.Gender = "Male".AuthorObject.AddressObject = New Address.AuthorObject.AddressObject.Address1="1 Main Street".AuthorObject.AddressObject.City="Anywhere".AuthorObject.AddressObject.State="KY".AuthorObject.AddressObject.Zip="40000".AuthorObject.AddressObject.Country="USA"End Wither.Serialize(writer,BookObject)writer.Close()End SubEnd Module 제어 출력 직렬 화 프로 세 스 생 성 표준 XML 파일,데이터 구성원 이 XML 요소 로 변 환 됩 니 다.그러나 모든 데이터 구성원 이 요소 가 되 는 것 은 아니 며,클래스 코드 에 표 시 를 추가 하여 출력 을 제어 할 수 있 는 XML 파일 을 추가 할 수 있 습 니 다.이렇게 하면 데이터 구성원 은 요소 가 아 닌 XML 속성 으로 바 꿀 수도 있 고 간단하게 무시 할 수도 있다.다음 예 는 수 정 된 북 클래스 VB.NET 코드 입 니 다.Public Class BookPublic AuthorObject As AuthorPublic Title As String _Public ISBN As String _Public Retail Price As Double Public Publisher As StringEnd Class 라 는 코드 는 시스템 이 XML 파일 을 생 성 할 때 클래스 구성원 ISBN 을 XML 속성 으로 하 는 동시에 Retail Price 구성원 을 무시 하 는 것 을 알려 줍 니 다.이러한 변 화 는 생 성 된 XML 파일 에서 볼 수 있 습 니 다.TonyPattonMale1 Main StreetAnywhereKY40000USAPractical LotusScriptManning Publications다음은 해당 하 는 C\#코드:Public class Book{public Book(){}public string Title;public Author AuthorObject;[System.Xml.Serialization.XmlAttribute()]public string ISBN;[System.Xml.Serialization.XmlIgnoreAttribute()]public double RetailPrice;public string Publisher;} 위 에는 단지 두 가지 표지 부 호 를 살짝 들 었 을 뿐이다..NET 문 서 를 찾 아서 완전한 태그 기 호 를 얻 으 십시오.비 직렬 화 비 직렬 화 데 이 터 는 XmlSerializer 류 의 Deserialize 방법 을 호출 하여 편리 하 게 실현 할 수 있 습 니 다.아래 의 VB.NET 프로그램 은 위의 XML 문서 의 비 직렬 화 를 단편 적 으로 완성 합 니 다.Dim BookObject As New BookDim ser As New XmlSerializer(GetType(Book)Dim fs As New System.IO.FileStream("booktest.xml",FileMode.Open)Dim reader As New System.XML.XmlTextReader(fs)BookObject=CType(ser.Deserialize(reader),Book)프로그램 은 결과 데 이 터 를 메모리 에 저장 합 니 다.다음은 등가 의 C\#코드:XmlSerializer ser=new XmlSerializer(typeof(Book));System.IO.FileStreamfs = new System.IO.FileStream("booktest.xml",FileMode.Open);System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader(fs);Book BookObject = (Book)(ser.Deserialize(reader)); ---------------------------------------------------저자 소개:Tony Patton 은 전문 응용 프로그램 개발 자로 지식 범위 가 넓 고 자바,VB,Lotus 와 XML 인증 을 받 았 다.

좋은 웹페이지 즐겨찾기