我正在尝试创建一块xml。我用xsd.exe创建了数据类。 根类是MESSAGE
。XmlTextWriter序列化问题
因此,创建一个MESSAGE
和填充其所有属性后,序列化这样的:
serializer = new XmlSerializer(typeof(Xsd.MESSAGE));
StringWriter sw = new StringWriter();
serializer.Serialize(sw, response);
string xml = sw.ToString();
截至目前为止一切顺利的话,该字符串XML包含有效(UTF-16编码)的XML。 现在我想创建一个UTF-8编码的XML代替,所以我不喜欢这样写道:
编辑:忘了,包括流
serializer = new XmlSerializer(typeof(Xsd.MESSAGE));
using (MemoryStream stream = new MemoryStream())
{
XmlTextWriter xtw = new XmlTextWriter(stream, Encoding.UTF8);
serializer.Serialize(xtw, response);
string xml = Encoding.UTF8.GetString(stream.ToArray());
}
的宣言和来这里的问题:使用这种方法,xml字符串前面加上了一个无效的字符(臭名昭着的正方形)。
当我检查这样的字符:
char c = xml[0];
我可以看到,c具有65279.
任何人的价值的线索,其中,这是哪里来的?
我可以很容易地通过切断第一炭解决这个问题:
xml = xml.SubString(1);
但我宁愿知道发生了什么事情不是盲目地切割的第一个字符的。
有人可以对此有所了解吗?谢谢!
参见:http://stackoverflow.com/questions/955611/xmlwriter-to-write-to-a 955989#955698 – 2009-06-09 13:09:18