31

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..

3
  • 1
    Where do you get the byte array from? Do you know the encoding used? Commented Apr 7, 2011 at 13:51
  • XML containes base64 encoded data.. Commented Apr 7, 2011 at 13:54
  • I meant the character encoding of the XML document. Commented Apr 7, 2011 at 13:56

4 Answers 4

70
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.

Sign up to request clarification or add additional context in comments.

2 Comments

Good answer, although the MemoryStream is IDisposable so don't forget to wrap it in a using block! :)
because of a byte order mark (BOM) I found this overload more useful (thanks Jon Skeet) MemoryStream ms = new MemoryStream(buffer, true);
7

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);
}

Comments

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));

1 Comment

Ooops... GetBytes takes a string and gives an array of bytes. GetString takes an array of bytes and gives a string. FTFY.
0

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

2 Comments

See XML Encoding Defaults page here. UTF8 is the correct assumption is most cases.
Still, I think you should have a note about it on your answer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.