C#反序列化XML異常:在 XML文檔(0, 0)中有一個錯誤“缺少根元素”

来源:http://www.cnblogs.com/seayxu/archive/2017/01/06/cs-xml-deserialize-exception-root-element-missing.html
-Advertisement-
Play Games

C#反序列化XML異常:在 XML文檔(0, 0)中有一個錯誤“缺少根元素” ...


Q:

在反序列化 Xml 字元串為 Xml 對象時,拋出如下異常。
Xml反序列化異常

即在 XML文檔(0, 0)中有一個錯誤:缺少根元素。

A:

首先看下代碼:

StringBuilder sb = new StringBuilder();
using (MemoryStream stream = new MemoryStream())
{
    StreamWriter writer = new StreamWriter(stream);
    writer.Write(sb.ToString().Trim());
    writer.Flush();

    //stream.Position=0;
    // or
    //stream.Seek(0, SeekOrigin.Begin);

    StreamReader reader = new StreamReader(stream);
    XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
    object obj = xmlSerializer.Deserialize(reader);

    reader.Close();
    reader.Close();

    writer.Close();
    writer.Dispose();
}

拋出異常是在object obj = xmlSerializer.Deserialize(reader);這裡出現的。

問題在於writer.Write(sb.ToString().Trim());這裡,原因是進行了寫入操作,最後流的位置停留在尾部。因此,在反序列化之前將流的位置定位到開始 0 的位置即可。

這裡就是在 上面註釋的地方。




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第八節 Linux 文件的屬性(上半部分) 標簽(空格分隔):Linux實戰教學筆記 第1章 Linux中的文件 1.1 文件屬性概述(ls lhi) linux里一切皆文件 Linux系統中的文件或目錄的屬性主要包括:索引節點(inode),文件類型,許可權屬性,鏈接數,所歸屬的用戶和用戶組,最近修 ...
  • 我們要接入微信公眾號平臺開發,需要填寫伺服器配置,然後依據介面文檔才能實現業務邏輯。但是微信公眾號介面只支持80介面(80埠)。我們因業務需求需要在一個公眾號功能變數名稱下麵,發佈兩個需要微信授權的項目,怎麼辦? 我們可以用nginx伺服器做反向代理來解決這個問題。nginx伺服器對外80埠,然後根據U ...
  • CLR支持兩種類型:引用類型和值類型。 引用類型總是從托管堆上分配,值類型一般線上程棧上分配。 在.NET Framework SDK中指出,任何稱為類的類型都是引用類型,所有值類型都成為結構或枚舉 以下代碼演示值類型與引用類型區別 值類型與引用類型的一些區別 值類型有已裝箱和未裝箱兩種形式,,引用 ...
  • 1.直接啟動 VS中直接啟動 2.IIS站點 IIS中配置一個站點來啟動(推薦) 3.登錄 系統預設創建2個用戶 預設用戶名:admin 密碼:123qwe 租戶:Default 預設用戶名:admin 密碼:123qwe 首次登錄系統會提示修改密碼 啟動成功,接下來配置一個菜單。 ...
  • 和PDF一樣,在word中,水印也分為圖片水印和文本水印,給文檔添加圖片水印可以使文檔變得更為美觀,更具有吸引力。文本水印則可以保護文檔,提醒別人該文檔是受版權保護的,不能隨意抄襲。前面我分享瞭如何給PDF添加水印,有人問我如何給word文檔添加水印,今天正好有空,就記錄一下我是如何實現的。 步驟其 ...
  • 哎!程式猿的痛啊,上次領導讓我做那個工作流開發啊。其實錯在我!太單純了!剛做好我好,我就上交給他了!這下好了,這坑爹的領導又來了! 領導:“小六啊,上次交給你的那個任務,你做的不錯啊!” 我:“您誇獎了,哪有,為了公司,我一定會拼盡全力。公司的事情,我永遠都是放在第一位的!” 領導:“好好好。手底下 ...
  • 編譯器直接支持的數據類型稱為基元類型。基元類型直接映射到Framework類庫(FCL)中存在的類型。比如在c#中int直接映射到曹衍濤 System.Int32類型. IL(IL可以指Intermediate Language,同MSIL(Microsoft Intermediate Langua ...
  • 本例是利用C#中的性能計數器(PerformanceCounter)監控網路的狀態。並能夠直觀的展現出來 涉及到的知識點: PerformanceCounter,表示 Windows NT 性能計數器組件。NextValue() 即獲取計數器樣本併為其返回計算所得值。 PerformanceCoun ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...