방법: XML 스트림의 대체 요소 이름 지정
코드 예제
XmlSerializer를 사용하면 동일한 클래스 집합을 가진 XML 스트림을 두 개 이상 생성할 수 있습니다. 두 개의 서로 다른 XML Web services에 약간만 다른 동일한 기본 정보가 필요한 경우 이런 작업이 필요할 수 있습니다. 예를 들어 책 주문을 처리하기 때문에 둘 모두에 ISBN 번호가 필요한 두 개의 XML Web services를 가정해 보겠습니다. 하나의 서비스는 태그 <ISBN>을 사용하고 다른 서비스는 태그 <BookID>를 사용합니다. ISBN
이라는 필드가 포함된 Book
이라는 클래스가 있습니다. Book
클래스의 인스턴스가 serialize될 때 기본적으로 멤버 이름(ISBN)을 태그 요소 이름으로 사용합니다. 첫 번째 XML Web services의 경우에는 예상된 동작입니다. 하지만 XML 스트림을 두 번째 XML Web services로 전송하려면 태그의 요소 이름이 BookID
가 되도록 serialization을 재정의해야 합니다.
대체 요소 이름을 사용하여 XML 스트림을 만들려면
XmlElementAttribute 클래스의 인스턴스를 만듭니다.
XmlElementAttribute의 ElementName을 "BookID"로 설정합니다.
XmlAttributes 클래스의 인스턴스를 만듭니다.
XmlAttributes의 XmlElements 속성을 통해 액세스되는 컬렉션에 XmlElementAttribute 개체를 추가합니다.
XmlAttributeOverrides 클래스의 인스턴스를 만듭니다.
XmlAttributes를 XmlAttributeOverrides에 추가하고 재정의할 개체의 형식과 재정의될 멤버의 이름을 전달합니다.
XmlAttributeOverrides로 XmlSerializer 클래스의 인스턴스를 만듭니다.
Book
클래스의 인스턴스를 만들고 이를 serialize 또는 deserialize합니다.
예제
Public Class SerializeOverride()
' Creates an XmlElementAttribute with the alternate name.
Dim myElementAttribute As XmlElementAttribute = _
New XmlElementAttribute()
myElementAttribute.ElementName = "BookID"
Dim myAttributes As XmlAttributes = New XmlAttributes()
myAttributes.XmlElements.Add(myElementAttribute)
Dim myOverrides As XmlAttributeOverrides = New XmlAttributeOverrides()
myOverrides.Add(typeof(Book), "ISBN", myAttributes)
Dim mySerializer As XmlSerializer = _
New XmlSerializer(GetType(Book), myOverrides)
Dim b As Book = New Book()
b.ISBN = "123456789"
' Creates a StreamWriter to write the XML stream to.
Dim writer As StreamWriter = New StreamWriter("Book.xml")
mySerializer.Serialize(writer, b);
End Class
public class SerializeOverride()
{
// Creates an XmlElementAttribute with the alternate name.
XmlElementAttribute myElementAttribute = new XmlElementAttribute();
myElementAttribute.ElementName = "BookID";
XmlAttributes myAttributes = new XmlAttributes();
myAttributes.XmlElements.Add(myElementAttribute);
XmlAttributeOverrides myOverrides = new XmlAttributeOverrides();
myOverrides.Add(typeof(Book), "ISBN", myAttributes);
XmlSerializer mySerializer =
new XmlSerializer(typeof(Book), myOverrides)
Book b = new Book();
b.ISBN = "123456789"
// Creates a StreamWriter to write the XML stream to.
StreamWriter writer = new StreamWriter("Book.xml");
mySerializer.Serialize(writer, b);
}
해당 XML 스트림은 다음과 같을 수 있습니다.
<Book>
<BookID>123456789</BookID>
</Book>
참고 항목
작업
방법: 개체 Serialize
방법: 개체 Deserialize
방법: 개체 Deserialize
참조
XmlSerializer
XmlElementAttribute
XmlAttributes
XmlAttributeOverrides
관련 자료
빌드 날짜: 2010-03-10