Sdílet prostřednictvím


Postupy: Zadání alternativního názvu elementu pro XML stream

Pomocí XmlSerializer, můžete vygenerovat více než jeden datový proud XML se stejnou sadou tříd. Můžete to provést, protože dvě různé webové služby XML vyžadují stejné základní informace s pouze mírné rozdíly. Představte si například dvě XML webové služby, které zpracovávají objednávky pro knihy a obě vyžadují tedy čísla ISBN. Jedna služba používá značku <ISBN> , zatímco druhá používá k <označení BookID>. Máte třídu s názvem Book obsahující pole s názvem ISBN. Pokud instance Book serializován třídy, standardně použije název člena (ISBN) jako název elementu značky. U první webové služby XML je podle očekávání. Pokud chcete odeslat datový proud XML druhý webové služby XML, je nutné přepsat serializace tak, aby byl název elementu na značku, ale BookID.

Chcete-li vytvořit datový proud XML s názvem alternativní elementu

  1. Vytvořit instanci XmlElementAttribute třídy.

  2. Nastavte ElementName z XmlElementAttribute na "BookID".

  3. Vytvořit instanci XmlAttributes třídy.

  4. Přidat XmlElementAttribute do kolekce přistupovat prostřednictvím XmlElements vlastnost XmlAttributes .

  5. Vytvořit instanci XmlAttributeOverrides třídy.

  6. Přidat XmlAttributes k XmlAttributeOverrides, předávání typ objektu určeného k přepsání a název člena přepsání.

  7. Vytvořit instanci XmlSerializer třídy s XmlAttributeOverrides.

  8. Vytvořit instanci Book třídy a serializaci nebo deserializaci ji.

Příklad

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);  
}  

Datový proud XML může vypadat takto.

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

Viz také