繼承 System.Xml.XmlWriter,為抽象類別,透過工廠方法建立實例,包裝 Stream,提供 Write 方法族群。核心差異在於:支援 XmlDictionary 進行語意壓縮,專為 Message 序列化/編碼設計。
XmlWriter xmlWriter = XmlWriter.Create(stream);
XmlDictionaryWriter writer = XmlDictionaryWriter.CreateDictionaryWriter(xmlWriter);
僅供 API 相容性使用,無額外功能。
using (XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(stream, Encoding.UTF8, false)) {
writer.WriteStartDocument();
writer.WriteElementString("SongName", "urn:ContosoRockabilia", "Aqualung");
}
ownsStream 參數控制 Dispose 是否關閉 Stream。產出 MIME 多部件訊息,適合大型二進位資料傳輸。兩個多載提供不同控制層級:
writeMessageHeaders=false)。警示:過度客製化 MIME 結構可能破壞互通性,違背 MTOM 設計初衷。
四個多載支援:
XmlDictionary,雙方預先共享詞彙表。XmlBinaryWriterSession 自動在串流開頭產生 Key-Value 對,免除帶外共享字典的挑戰,但有效能成本。| 編碼方式 | 位元組數 | 備註 |
|---|---|---|
| Text (UTF-8) | 59 | 基準 |
| Binary (無字典) | 43 | 二進制結構固有優勢 |
| Binary (有字典) | 14 | 元素名/命名空間以 1 位元組 Key 取代,壓縮 75% |
字典僅對二進制編碼生效。文字編碼因 UTF-8/16 規範固定,無壓縮空間。API 設計允許同一方法接受 String 或 XmlDictionaryString,實現編碼無關的彈性程式碼。