Megosztás a következőn keresztül:


Útmutató: Alternatív elemnév megadása XML-adatfolyamhoz

XmlSerializerA használatával több XML-streamet is létrehozhat ugyanazzal az osztálykészlettel. Érdemes lehet ezt megtenni, mert két különböző XML-webszolgáltatás ugyanazokat az alapvető információkat igényli, csak kis eltéréseket. Képzeljen el például két XML-webszolgáltatást, amelyek a könyvek megrendeléseit dolgozzák fel, és így mindkettőhöz ISBN-számokat kell megadni. Az egyik szolgáltatás a címkét <ISBN> , a második pedig a címkét <BookID>használja. Van egy osztály neve Book , amely egy nevű ISBNmezőt tartalmaz. Ha az Book osztály egy példánya szerializálva van, alapértelmezés szerint a tagnevet (ISBN) fogja használni címkeelem-névként. Az első XML-webszolgáltatás esetében ez a várt módon történik. Ha azonban az XML-adatfolyamot a második XML-webszolgáltatásnak szeretné elküldeni, felül kell bírálnia a szerializálást, hogy a címke elemneve legyen BookID.

XML-adatfolyam létrehozása alternatív elemnévvel

  1. Hozzon létre egy példányt a XmlElementAttribute osztályból.

  2. Állítsa be a ElementName mezőt a XmlElementAttribute-ben "BookID" értékre.

  3. Készítsen egy példányt a XmlAttributes osztályból.

  4. Az XmlAttributesXmlElements tulajdonságán keresztül elért gyűjteményhez adja hozzá az XmlElementAttribute objektumot.

  5. Hozzon létre egy példányt az XmlAttributeOverrides osztályból.

  6. Adja hozzá a XmlAttributes a XmlAttributeOverrides-hez, átadva a felülírni kívánt objektum típusát és a felülbírálandó tag nevét.

  7. Hozzon létre egy XmlSerializer osztály példányt a XmlAttributeOverrides segítségével.

  8. Hozzon létre egy példányt az Book osztályból, és végezze el annak szerializálását vagy deszerializálását.

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

Az XML-adatfolyam a következőhöz hasonló lehet.

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

Lásd még