序列化

序列化是在 C 資料結構中寫入值的程式, (結構、陣列和基本值) 為 XML 專案。 還原序列化是反向程式。

序列化是在 C 資料結構中寫入值的程式, (結構、陣列和基本值) 做為 XML 專案。 還原序列化是反向程式。

這兩個進程都依賴 C 資料結構和 XML 之間的對應描述。

此圖顯示序列化和還原序列化如何依賴 C 資料結構和 XML 之間的對應描述。

若要序列化值,應用程式會呼叫 WsWriteElementWsWriteAttributeWsWriteType

若要還原序列化值,應用程式會呼叫 WsReadElementWsReadAttributeWsReadType

安全性

XML 讀取器 用於還原序列化程式。 請參閱 XML 讀取器中 XML 相關安全性資訊的安全性一節。

還原序列化程式會繼續還原序列化資料,直到它完成讀取要還原序列化的專案為止。 當還原序列化程式遇到任何不符合還原序列化資料描述的 XML 檔時,還原序列化程式就會失敗。 此時,使用的 XML 讀取器會變成無效,並傳回錯誤。

根據預設,還原序列化為嚴格。 導致還原序列化失敗的部分條件包括但不限於:

  • 遺漏預期的元素
  • 非預期的元素欄位會出現在必要元素之間
  • 必要欄位之後的額外元素內容,除非 WS_STRUCT_IGNORE_TRAILING_ELEMENT_CONTENT
  • 除非指定 WS_STRUCT_IGNORE_UNHANDLED_ATTRIBUTES 旗標,否則非預期的屬性
  • 超出指定範圍的未預期資料類型值
  • 重複專案的計數超出指定的範圍

序列化大量資料可能會造成過多的記憶體配置,而且可能會導致拒絕服務攻擊。 還原序列化資料的使用者必須指定堆積物件來配置資料,而且使用者可以使用堆積配置限制來防止記憶體配置攻擊。

資料類型的範圍支援,包括字串的最大長度、陣列中的 max 元素計數等等。可讓使用者控制不同資料類型的大小上限。 使用者可以在資料描述或架構中指定範圍,以限制不同資料的大小上限。

(文字、二進位、MTOM) ,支援包含內嵌零的字串值。 將內嵌零的字串還原序列化時,使用者應該使用計算字串 (WS_STRING) ,因此零不會混淆字串長度的計算。 如果包含內嵌零的字串值還原序列化為預期以零終止字串的欄位,則會傳回錯誤,且還原序列化失敗。 如果使用 wsutil 來產生資料描述,則應該使用 /string:WS_STRING 選項,如果預期有內嵌零的字串。

下列回呼會與序列化搭配使用:

下列列舉會與序列化搭配使用:

下列函式會與序列化搭配使用:

下列結構會與序列化搭配使用: