序列化
序列化是在 C 資料結構中寫入值的程式, (結構、陣列和基本值) 為 XML 專案。 還原序列化是反向程式。
序列化是在 C 資料結構中寫入值的程式, (結構、陣列和基本值) 做為 XML 專案。 還原序列化是反向程式。
這兩個進程都依賴 C 資料結構和 XML 之間的對應描述。
若要序列化值,應用程式會呼叫 WsWriteElement、 WsWriteAttribute 或 WsWriteType。
若要還原序列化值,應用程式會呼叫 WsReadElement、 WsReadAttribute 或 WsReadType。
安全性
XML 讀取器 用於還原序列化程式。 請參閱 XML 讀取器中 XML 相關安全性資訊的安全性一節。
還原序列化程式會繼續還原序列化資料,直到它完成讀取要還原序列化的專案為止。 當還原序列化程式遇到任何不符合還原序列化資料描述的 XML 檔時,還原序列化程式就會失敗。 此時,使用的 XML 讀取器會變成無效,並傳回錯誤。
根據預設,還原序列化為嚴格。 導致還原序列化失敗的部分條件包括但不限於:
- 遺漏預期的元素
- 非預期的元素欄位會出現在必要元素之間
- 必要欄位之後的額外元素內容,除非 WS_STRUCT_IGNORE_TRAILING_ELEMENT_CONTENT
- 除非指定 WS_STRUCT_IGNORE_UNHANDLED_ATTRIBUTES 旗標,否則非預期的屬性
- 超出指定範圍的未預期資料類型值
- 重複專案的計數超出指定的範圍
序列化大量資料可能會造成過多的記憶體配置,而且可能會導致拒絕服務攻擊。 還原序列化資料的使用者必須指定堆積物件來配置資料,而且使用者可以使用堆積配置限制來防止記憶體配置攻擊。
資料類型的範圍支援,包括字串的最大長度、陣列中的 max 元素計數等等。可讓使用者控制不同資料類型的大小上限。 使用者可以在資料描述或架構中指定範圍,以限制不同資料的大小上限。
(文字、二進位、MTOM) ,支援包含內嵌零的字串值。 將內嵌零的字串還原序列化時,使用者應該使用計算字串 (WS_STRING) ,因此零不會混淆字串長度的計算。 如果包含內嵌零的字串值還原序列化為預期以零終止字串的欄位,則會傳回錯誤,且還原序列化失敗。 如果使用 wsutil 來產生資料描述,則應該使用 /string:WS_STRING 選項,如果預期有內嵌零的字串。
下列回呼會與序列化搭配使用:
下列列舉會與序列化搭配使用:
下列函式會與序列化搭配使用:
下列結構會與序列化搭配使用:
- WS_ATTRIBUTE_DESCRIPTION
- WS_BOOL_DESCRIPTION
- WS_BYTES_DESCRIPTION
- WS_BYTE_ARRAY_DESCRIPTION
- WS_CHAR_ARRAY_DESCRIPTION
- WS_CUSTOM_TYPE_DESCRIPTION
- WS_DATETIME_DESCRIPTION
- WS_DECIMAL_DESCRIPTION
- WS_DEFAULT_VALUE
- WS_DOUBLE_DESCRIPTION
- WS_DURATION_DESCRIPTION
- WS_ELEMENT_DESCRIPTION
- WS_ENDPOINT_ADDRESS_DESCRIPTION
- WS_ENUM_DESCRIPTION
- WS_ENUM_VALUE
- WS_FAULT_DESCRIPTION
- WS_FIELD_DESCRIPTION
- WS_FLOAT_DESCRIPTION
- WS_GUID_DESCRIPTION
- WS_INT16_DESCRIPTION
- WS_INT32_DESCRIPTION
- WS_INT64_DESCRIPTION
- WS_INT8_DESCRIPTION
- WS_ITEM_RANGE
- WS_STRING_DESCRIPTION
- WS_STRUCT_DESCRIPTION
- WS_TIMESPAN_DESCRIPTION
- WS_UINT16_DESCRIPTION
- WS_UINT32_DESCRIPTION
- WS_UINT64_DESCRIPTION
- WS_UINT8_DESCRIPTION
- WS_UNION_DESCRIPTION
- WS_UNION_FIELD_DESCRIPTION
- WS_UNIQUE_ID_DESCRIPTION
- WS_UTF8_ARRAY_DESCRIPTION
- WS_VOID_DESCRIPTION
- WS_WSZ_DESCRIPTION
- WS_XML_QNAME_DESCRIPTION
- WS_XML_STRING_DESCRIPTION