29

i have xml what i get as byte array, whats the best way to get the xml string out of it? I was tryng to use xmltextreader and memorystream but with no success..

hs2d
  • 5,773
  • 19
  • 60
  • 100

4 Answers4

65
XmlDocument doc = new XmlDocument();
string xml = Encoding.UTF8.GetString(buffer);
doc.LoadXml(xml);

OR

XmlDocument doc = new XmlDocument();
MemoryStream ms = new MemoryStream(buffer);
doc.Load(ms);

This assumes your data has UTF8 encoding which is the usual for XML. Also buffer here is the byte array.

R. Martinho Fernandes
  • 219,040
  • 71
  • 423
  • 503
Aliostad
  • 78,844
  • 21
  • 155
  • 205
  • 8
    Good answer, although the MemoryStream is IDisposable so don't forget to wrap it in a using block! :) – firefox1986 Apr 07 '11 at 13:58
  • because of a byte order mark (BOM) I found this overload more useful (thanks Jon Skeet) `MemoryStream ms = new MemoryStream(buffer, true);` – bkwdesign Mar 14 '17 at 20:09
6

Assuming your xml is in the default 'UTF8' encoding., you could do something like this;

string xml = System.Text.UTF8Encoding.UTF8.GetString(bytes);
System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument().LoadXml(xml);

Or this;

XmlDocument doc = new XmlDocument();
using (MemoryStream ms = new MemoryStream(buffer))
{
    doc.Load(ms);
}
firefox1986
  • 1,502
  • 9
  • 9
4

Based on the Encoding, you can do

string xmlString = System.Text.UTF8Encoding.UTF8.GetString(bytes);

and use the string

XmlTextReader reader = new XmlTextReader(new StringReader(xmlString));
R. Martinho Fernandes
  • 219,040
  • 71
  • 423
  • 503
Bala R
  • 104,615
  • 23
  • 192
  • 207
0

Take a look at the System.Text.Encoding.UTF8 class. It should let you convert youre byte array into a UTF8 string.

NKCSS
  • 2,713
  • 1
  • 20
  • 37