我正在嘗試創建一塊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