先週、この問題が発生しました。PDF ファイルをシリアル化し、XML ファイル内でサーバーに送信する必要がありました。
.NET を使用している場合は、バイナリ ファイルを直接 base64 文字列に変換し、XML 要素内に貼り付けることができます。
string base64 = Convert.ToBase64String(File.ReadAllBytes(fileName));
または、XmlWriter オブジェクトに組み込まれたメソッドがあります。私の特定のケースでは、Microsoft のデータ型名前空間を含める必要がありました。
StringBuilder sb = new StringBuilder();
System.Xml.XmlWriter xw = XmlWriter.Create(sb);
xw.WriteStartElement("doc");
xw.WriteStartElement("serialized_binary");
xw.WriteAttributeString("types", "dt", "urn:schemas-microsoft-com:datatypes", "bin.base64");
byte[] b = File.ReadAllBytes(fileName);
xw.WriteBase64(b, 0, b.Length);
xw.WriteEndElement();
xw.WriteEndElement();
string abc = sb.ToString();
文字列 abc は次のようになります。
<?xml version="1.0" encoding="utf-16"?>
<doc>
<serialized_binary types:dt="bin.base64" xmlns:types="urn:schemas-microsoft-com:datatypes">
JVBERi0xLjMKJaqrrK0KNCAwIG9iago8PCAvVHlwZSAvSW5mbw...(plus lots more)
</serialized_binary>
</doc>