簡體   English   中英

C#XML序列化錯誤

[英]C# XML serialization error

我有一個XML dox,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Server Manufacturer="SQL" Version="1">
  <Database Name="Test123" >
    <Devices>
      <Device Name="Testdata" ..../>
      <Device Name="Testlog" ..../>
    </Devices>
  </Database>
</Server>

我想像這樣反序列化:var database =(Database)xmlSerializer.Deserialize(new StreamReader(xmlFilePath));

其中Database是帶有設備集合的類。

當我注釋掉XML文件中的Server標記但我不想這么做時,它工作正常。 我收到一條錯誤消息:“ XMl文檔行(1、4)中存在錯誤”

如何告訴序列化忽略服務器標簽,是否需要在XML文件中放置名稱空間?

我嘗試將[XmlRootAttribute(“ Database”)]放在數據庫對象上,但仍然出現相同的錯誤

如果您真的不想創建Server類,則從加載的xml中刪除<Server/> “ wrapper”。

例如,代替此:

(Database)xmlSerializer.Deserialize(
    new StreamReader(xmlFilePath));

做這個:

(Database)xmlSerializer.Deserialize(
    XElement.Load(xmlFilePath).Element("Database").CreateReader());

您應該反序列化Server類,如下所示:

public class Server
{
    public string Manufacturer{get;set;}
    public int Version {get;set;}
    public Database Database {get;set;}
}

然后反序列化:

var server = (Server)xmlSerializer.Deserialize(new StreamReader(xmlFilePath));
var database = server.Database;

我相信您的XmlRootAttribute是問題,請在示例代碼下方將Server添加為XmlRootAttribute ..

[Serializable]
[XmlRootAttribute("Server", Namespace = "", IsNullable = false)]    
public class YourClass
{
    public YourClass()
    {

    }
    [XmlAttribute]
    public string Manufacturer { get; set; }
   ....

}

並反序列化服務器而不是數據庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM