It seems that most xml is in UTF-8. However, whenever I have a XmlTextWriter create xml in UTF-8 it always puts three additional bytes at the start that screws things up. The resulting xml will not load into a XPathDocument or XmlDocument. If I use ascii encoding it works fine. Can anyone tell me what's happening here?
Code:
byte[] b = null;
MemoryStream ms = null;
XmlTextWriter xtw = null;
string ret = "";
Encoding enc = null;
ms = new MemoryStream();
enc = Encoding.UTF8; //Adds extra bytes
//enc = Encoding.ASCII; //Works properly
xtw = new XmlTextWriter(ms, enc);
xtw.WriteStartDocument();
xtw.WriteStartElement("Import");
xtw.WriteStartElement("Indexes");
xtw.WriteStartElement("Index");
xtw.WriteAttributeString("name", "ControlNumber");
xtw.WriteAttributeString("value", "123456789");
xtw.WriteEndElement();
xtw.WriteEndElement();
xtw.WriteEndElement();
xtw.WriteEndDocument();
xtw.Flush();
b = ms.ToArray();
ret = enc.GetString(b);