首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 文件與 XML 互轉:Base64 編碼實現二進制文件 XML 化傳輸

     編輯:關於C語言

應用場景

將 Office 文檔等二進制文件編碼為 XML,通過 Web Service、.NET Remoting、Socket 等跨平台傳輸。XML 的平台無關性使異構系統(如 .NET 服務端 + Java 客戶端)交互成為可能。

核心原理

  1. 文件 → 字節數組 → Base64 字符串 → XML 屬性值
  2. XML → Base64 字符串 → 字節數組 → 文件

關鍵代碼片段

文件轉 XML(Base64 編碼)


FileStream inFile = new FileStream(strFileName, FileMode.Open, FileAccess.Read);
byte[] binaryData = new byte[inFile.Length];
inFile.Read(binaryData, 0, (int)inFile.Length);
string base64Str = Convert.ToBase64String(binaryData);

// 包裝為簡單 XML
string xmlStr = string.Format("", base64Str);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlStr);
xmlDoc.Save(savePath);

XML 轉文件(Base64 解碼)


XmlNode node = xmlDoc.DocumentElement.SelectSingleNode("me");
XmlElement elem = (XmlElement)node;
string base64Str = elem.GetAttribute("aa");
byte[] bytes = Convert.FromBase64String(base64Str);

FileStream outFile = new FileStream(savePath, FileMode.CreateNew);
outFile.Write(bytes, 0, bytes.Length);

完整 WinForms 示例結構

  • 四個按鈕:加載文檔、生成 XML、加載 XML、生成文檔
  • 兩個 XmlDocument 實例分別持有編碼/解碼數據
  • OpenFileDialog/SaveFileDialog 選擇路徑

架構建議

層面建議
傳輸協議優先基於文檔的交互(如 MSMQ、JMQ),避免 RPC 強耦合
大文件處理分塊傳輸、流式 Base64、或改用 MTOM (Message Transmission Optimization Mechanism)
安全性傳輸層加密 (TLS),敏感數據加密後再 Base64

避坑指南

  • Base64 體積膨脹 ~33%,大文件需評估帶寬
  • XmlDocument 全量載入內存,超大文件改用 XmlReader/Writer 流式處理
  • 文件路徑權限、並發訪問需妥善處理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved