使用StringWriter進(jìn)行XML序列化我正在尋找一種簡(jiǎn)單的方法來(lái)序列化對(duì)象(在C#3中)。我用Google搜索了一些例子,并得出了類似的結(jié)果:MemoryStream memoryStream = new MemoryStream ( );XmlSerializer xs = new XmlSerializer ( typeof ( MyObject) );XmlTextWriter xmlTextWriter = new XmlTextWriter ( memoryStream, Encoding.UTF8 );xs.Serialize ( xmlTextWriter, myObject);string result = Encoding.UTF8.GetString(memoryStream .ToArray());讀完這個(gè)問(wèn)題之后我問(wèn)自己,為什么不使用StringWriter?看起來(lái)容易得多。XmlSerializer ser = new XmlSerializer(typeof(MyObject));StringWriter writer = new StringWriter();ser.Serialize(writer, myObject);serializedValue = writer.ToString();另一個(gè)問(wèn)題是,第一個(gè)示例生成的XML我不能只寫入SQL Server 2005 DB的XML列。第一個(gè)問(wèn)題是:在我之后需要它作為字符串時(shí),是否有理由不使用StringWriter序列化Object?在google搜索時(shí),我從未找到使用StringWriter的結(jié)果。第二個(gè)當(dāng)然是:如果你不應(yīng)該使用StringWriter(無(wú)論出于何種原因),這將是一個(gè)好的和正確的方法?加成:正如兩個(gè)答案已經(jīng)提到的那樣,我將進(jìn)一步討論XML到DB的問(wèn)題。寫入數(shù)據(jù)庫(kù)時(shí),我得到以下異常:System.Data.SqlClient.SqlException:XML解析:第1行,字符38,無(wú)法切換編碼對(duì)于字符串<?xml version="1.0" encoding="utf-8"?><test/>我從XmlTextWriter中獲取了字符串,然后將xml放在那里。這個(gè)沒(méi)有用(手動(dòng)插入DB)。之后我嘗試使用encoding =“utf-16”手動(dòng)插入(只是編寫INSERT INTO ...),這也失敗了。刪除編碼完全有效。在那個(gè)結(jié)果之后我切換回StringWriter代碼并且瞧 - 它工作了。問(wèn)題:我真的不明白為什么。在Christian Hayter:通過(guò)這些測(cè)試,我不確定我是否必須使用utf-16來(lái)寫入數(shù)據(jù)庫(kù)。不會(huì)將編碼設(shè)置為UTF-16(在xml標(biāo)簽中)嗎?
使用StringWriter進(jìn)行XML序列化
波斯汪
2019-08-16 16:14:18