이 클래스를 XmlSerializer사용하면 동일한 클래스 집합을 사용하여 둘 이상의 XML 스트림을 생성할 수 있습니다. 두 개의 서로 다른 XML 웹 서비스에는 약간의 차이만 있는 동일한 기본 정보가 필요하기 때문에 이 작업을 수행할 수 있습니다. 예를 들어 책에 대한 주문을 처리하므로 둘 다 ISBN 번호가 필요한 두 개의 XML 웹 서비스를 상상해 보세요. 한 서비스는 태그 <ISBN> 를 사용하고 두 번째 서비스는 태그 <BookID>를 사용합니다. 이름이 Book지정된 ISBN 필드가 포함된 클래스가 있습니다. 클래스 인스턴스가 Book serialize되면 기본적으로 ISBN(멤버 이름)을 태그 요소 이름으로 사용합니다. 첫 번째 XML 웹 서비스의 경우 예상대로 수행됩니다. 그러나 XML 스트림을 두 번째 XML 웹 서비스로 보내려면 태그의 요소 이름이 BookID되도록 serialization을 재정의해야 합니다.
대체 요소 이름을 사용하여 XML 스트림을 만들려면
클래스의 인스턴스를 만듭니다 XmlElementAttribute .
XmlElementAttribute의 ElementName을 "BookID"로 설정합니다.
클래스의 인스턴스를 만듭니다 XmlAttributes .
XmlElements 속성을 통해 액세스하는 컬렉션에
XmlElementAttribute개체를 XmlAttributes에 추가합니다.클래스의 인스턴스를 만듭니다 XmlAttributeOverrides .
XmlAttributes를 XmlAttributeOverrides에 추가하고, 재정의할 개체의 형식과 재정의되는 멤버의 이름을 전달합니다.XmlAttributeOverrides을(를) 사용하여XmlSerializer클래스의 인스턴스를 만듭니다.클래스의 인스턴스를
Book만들고 직렬화하거나 역직렬화합니다.
예시
Public Function 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 void 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>
참고하십시오
.NET