J'ai eu ce problème la semaine dernière. Je devais sérialiser un fichier PDF et l'envoyer, dans un fichier XML, à un serveur.
Si vous utilisez .NET, vous pouvez convertir un fichier binaire directement en une chaîne base64 et la placer dans un élément XML.
string base64 = Convert.ToBase64String(File.ReadAllBytes(fileName));
Ou bien, il existe une méthode intégrée à l'objet XmlWriter. Dans mon cas particulier, j'ai dû inclure l'espace de noms des types de données de 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();
La chaîne abc ressemble à quelque chose qui ressemble à ça :
<?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>