BizTalk Utilities CV ,   Jobs ,   Code library
 
Go to the front page to continue learning about XML or select below:

Contents

ReBlogger Contents

Previous posts in XmlSerializer

 
 
Page 19080 of 21350

base64 Encode XML Data

Blogger : Kirk Allen Evans Blog
All posts : All posts by Kirk Allen Evans Blog
Category : XmlSerializer
Blogged date : 2005 Apr 03

In a comment on my post on base64 decoding a picture in XML, someone asked (before the comment was deleted during the upgrade to Community Server until I learned where to find the comments in Community Server) how to do the opposite of that post.  That is, how do you base64 encode binary data into an XML document

The key to doing this lies in the XmlTextWriter.WriteBase64() method.  This method accepts a byte array, so the only question left is how to convert a picture to a byte array

In the example below, I load a GIF image from file into a System.Drawing.Image object.  To convert this to a byte array, I save the picture to an in-memory stream, which in turn can be read into a byte array using the System.IO.Stream.ToArray() method.  Once we have the byte array, we simply pass it to the XmlTextWriter.WriteBase64() method.

//Load the picture from a file
Image picture = Image.FromFile(@"c:\temp\test.gif");

//Create an in-memory stream to hold the picture`s bytes
System.IO.MemoryStream pictureAsStream = new System.IO.MemoryStream();
picture.Save(pictureAsStream,System.Drawing.Imaging.ImageFormat.Gif);

//Rewind the stream back to the beginning
pictureAsStream.Position = 0;
//Get the stream as an array of bytes
byte [] pictureAsBytes = pictureAsStream.ToArray();

//Create an XmlTextWriter to write the XML somewhere... here, I just chose
//to stream out to the Console output stream

System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(Console.Out);

//Write the root element of the XML document and the base64 encoded data
writer.WriteStartElement("w","binData","
http://schemas.microsoft.com/office/word/2003/wordml");

writer.WriteBase64(pictureAsBytes,0,pictureAsBytes.Length);

writer.WriteEndElement();
writer.Flush();

Note that I did not write out the complete Word 2003 XML document, I leave that as an exercise to the reader.  The key part is seeing how to write the base64 encoded data to the w:binData element.


Read comments or post a reply to : base64 Encode XML Data
Page 19080 of 21350

Newest posts
 

    Email TopXML