第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用StringWriter進(jìn)行XML序列化

使用StringWriter進(jìn)行XML序列化

波斯汪 2019-08-16 16:14:18
使用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)簽中)嗎?
查看完整描述

3 回答

?
蠱毒傳說(shuō)

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊

一個(gè)問(wèn)題StringWriter是,默認(rèn)情況下,它不允許您設(shè)置它所宣傳的編碼 - 因此您最終可以使用XML文檔將其編碼通告為UTF-16,這意味著如果您需要將其編碼為UTF-16把它寫到文件中。我有一個(gè)小班來(lái)幫忙解決這個(gè)問(wèn)題:

public sealed class StringWriterWithEncoding : StringWriter{
    public override Encoding Encoding { get; }

    public StringWriterWithEncoding (Encoding encoding)
    {
        Encoding = encoding;
    }    }

或者如果你只需要UTF-8(這是我經(jīng)常需要的):

public sealed class Utf8StringWriter : StringWriter{
    public override Encoding Encoding => Encoding.UTF8;}

至于為何無(wú)法將XML保存到數(shù)據(jù)庫(kù)中 - 如果您希望我們能夠診斷/修復(fù)它,您必須向我們提供有關(guān)您嘗試時(shí)發(fā)生的事情的更多詳細(xì)信息。


查看完整回答
反對(duì) 回復(fù) 2019-08-16
  • 3 回答
  • 0 關(guān)注
  • 944 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)