Sdílet prostřednictvím


Postupy: Určení alternativního názvu elementu pro datový proud XML

Pomocí této možnosti XmlSerializermůžete vygenerovat více než jeden datový proud XML se stejnou sadou tříd. Můžete to udělat, protože dvě různé webové služby XML vyžadují stejné základní informace, s pouze mírnými rozdíly. Představte si například dvě webové služby XML, které zpracovávají objednávky knih, a oba vyžadují čísla ISBN. Jedna služba používá značku <ISBN> , zatímco druhá používá značku <BookID>. Máte třídu s názvem Book , která obsahuje pole s názvem ISBN. Když je instance Book třídy serializována, bude ve výchozím nastavení používat název člena (ISBN) jako název elementu značky. U první webové služby XML je to podle očekávání. Chcete-li však odeslat datový proud XML do druhé webové služby XML, je nutné přepsat serializace tak, aby název elementu značky je BookID.

Vytvoření datového proudu XML s alternativním názvem elementu

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

  2. Nastavte ElementName z XmlElementAttribute na hodnotu "BookID".

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

  4. XmlElementAttribute Přidejte objekt do kolekce, ke které se přistupuje prostřednictvím XmlElements vlastnosti XmlAttributes .

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

  6. Přidejte XmlAttributes do XmlAttributeOverrides a předejte typ objektu, který má být přepsán, a název člena, který je přepisován.

  7. Vytvořte instanci XmlSerializer třídy pomocí XmlAttributeOverridespříkazu .

  8. Vytvořte instanci Book třídy a serializujte nebo deserializujte ji.

Example

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 přibližně takto.

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

Viz také