August 24, 2005

Reading BinHex encoded data out of XmlDocument

It's surprisingly tricky to get BinHex encoded data out of XmlDocument tree in .NET 1.X. XmlConvert class, which apparently has to support such conversions has a method FromBinHexString(), but weird - it only public for .NET Compact Framework. It's internal for regular .NET Framework. It's obvious that lots of .NET functionality isn't supported in .NET Compact Framework, but this is first time I see anything that .NET CF implements and .NET doesn't. Hmm, and in the forthcoming .NET 2.0 it's the same, do I miss something? Anyway, here is a workaround.

XmlTextReader can handle BinHex data just fine. So all you need is to get BinHex data out of XmlDocument along with containing element as string and read it with XmlTextReader:

XmlDocument doc = new XmlDocument();
doc.Load("foo.xml");
XmlNode dataNode = doc.SelectSingleNode("/data");
XmlTextReader r = new XmlTextReader(new StringReader(dataNode.OuterXml));
r.MoveToContent();
do 
{
  byte[] buf  = new byte[1024];
  int bytesRead = r.ReadBinHex(buf, 0, buf.Length);
  string data = new string(Encoding.UTF8.GetChars(buf, 0, bytesRead));
  Console.WriteLine(data);
} while (r.Name == "data");

August 24, 2005 11:34 AM | #XML , #XML in .NET
Comments
Post a comment




Remember Me?