共用方式為


HOW TO:指定 XML 資料流的替代項目名稱

程式碼範例

使用 XmlSerializer,以相同類別集,可產生一個以上的 XML 資料流。當兩個不同的 XML Web 服務要求相同的基本資訊以及些微差異時,您也許會想這麼做。例如,試想有兩家處理書本訂單的 XML Web 服務,而且都需要 ISBN 號碼。一家服務使用標記 <ISBN>,另一家則是使用標記 <BookID>。您有名為 Book 的類別,其中包含名為 ISBN 的欄位。當 Book 類別的執行個體序列化時,它會根據預設使用成員名稱 (ISBN) 做為標記項目名稱。對於第一個 XML Web 服務,這正如預期。不過要想要傳送 XML 資料流至第二個 XML Web 服務,您必須覆寫序列化,讓標記的項目名稱為 BookID

以其他項目名稱建立 XML 資料流

  1. 建立 XmlElementAttribute 類別的執行個體。

  2. XmlElementAttributeElementName 設為 "BookID"。

  3. 建立 XmlAttributes 類別的執行個體。

  4. XmlElementAttribute 物件加入至透過 XmlAttributesXmlElements 屬性存取的集合。

  5. 建立 XmlAttributeOverrides 類別的執行個體。

  6. XmlAttributes 加入至 XmlAttributeOverrides,傳遞要覆寫的物件型別及遭覆寫的成員名稱。

  7. 使用 XmlAttributeOverrides 建立 XmlSerializer 類別的執行個體。

  8. 建立 Book 類別的執行個體,將它序列化或還原序列化。

範例

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 資料流可能類似下列所示。

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

另請參閱

工作

HOW TO:序列化物件
HOW TO:還原序列化物件
HOW TO:還原序列化物件

參考

XmlSerializer
XmlElementAttribute
XmlAttributes
XmlAttributeOverrides

其他資源

XML 和 SOAP 序列化

建置日期:2010-03-10