방법: XML 스트림의 대체 요소 이름 지정How to: Specify an Alternate Element Name for an XML Stream

XmlSerializer를 사용하면 동일한 클래스 집합을 가진 XML 스트림을 두 개 이상 생성할 수 있습니다.Using the XmlSerializer, you can generate more than one XML stream with the same set of classes. 두 개의 서로 다른 XML Web services에 약간만 다른 동일한 기본 정보가 필요한 경우 이런 작업이 필요할 수 있습니다.You might want to do this because two different XML Web services require the same basic information, with only slight differences. 예를 들어 책 주문을 처리하기 때문에 둘 모두에 ISBN 번호가 필요한 두 개의 XML Web services를 가정해 보겠습니다.For example, imagine two XML Web services that process orders for books, and thus both require ISBN numbers. 한 서비스는 <ISBN> 태그를 사용하고 다른 서비스는 <BookID> 태그를 사용합니다.One service uses the tag <ISBN> while the second uses the tag <BookID>. Book이라는 필드가 포함된 ISBN이라는 클래스가 있습니다.You have a class named Book that contains a field named ISBN. Book 클래스의 인스턴스가 serialize될 때 기본적으로 멤버 이름(ISBN)을 태그 요소 이름으로 사용합니다.When an instance of the Book class is serialized, it will, by default, use the member name (ISBN) as the tag element name. 첫 번째 XML Web services의 경우에는 예상된 동작입니다.For the first XML Web service, this is as expected. 하지만 XML 스트림을 두 번째 XML Web services로 전송하려면 태그의 요소 이름이 BookID가 되도록 serialization을 재정의해야 합니다.But to send the XML stream to the second XML Web service, you must override the serialization so that the tag's element name is BookID.

대체 요소 이름을 사용하여 XML 스트림을 만들려면To create an XML stream with an alternate element name

  1. XmlElementAttribute 클래스의 인스턴스를 만듭니다.Create an instance of the XmlElementAttribute class.

  2. ElementNameXmlElementAttribute을 "BookID"로 설정합니다.Set the ElementName of the XmlElementAttribute to "BookID".

  3. XmlAttributes 클래스의 인스턴스를 만듭니다.Create an instance of the XmlAttributes class.

  4. XmlElementAttributeXmlElements 속성을 통해 액세스되는 컬렉션에 XmlAttributes 개체를 추가합니다.Add the XmlElementAttribute object to the collection accessed through the XmlElements property of XmlAttributes .

  5. XmlAttributeOverrides 클래스의 인스턴스를 만듭니다.Create an instance of the XmlAttributeOverrides class.

  6. XmlAttributesXmlAttributeOverrides에 추가하고 재정의할 개체의 형식과 재정의될 멤버의 이름을 전달합니다.Add the XmlAttributes to the XmlAttributeOverrides, passing the type of the object to override and the name of the member being overridden.

  7. XmlSerializerXmlAttributeOverrides 클래스의 인스턴스를 만듭니다.Create an instance of the XmlSerializer class with XmlAttributeOverrides.

  8. Book 클래스의 인스턴스를 만들고 이를 직렬화 또는 역직렬화합니다.Create an instance of the Book class, and serialize or deserialize it.

예제Example

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 스트림은 다음과 같을 수 있습니다.The XML stream might resemble the following.

<Book>  
    <BookID>123456789</BookID>  
</Book>  

참고 항목See also